Variable scope in javascript module

Dmitry Volyntsev xeioex at nginx.com
Tue Oct 30 17:09:22 UTC 2018



On 30.10.2018 19:58, alweiss wrote:
> Here is a sample that works with Java but not with njs :
> 
> function my() {
>      resp = "Start";
>      console.log ('Initial resp is ' + resp);
> 
>      function done() {
>          resp += "AndContinue";
>          console.log('In loop resp is ' + resp)
>      }
> 
>      done();
> }
> resp = 'empty'
> my();
> console.log('End Resp is : ' + resp)
> 
> With java :
> 
> root at linux3:/etc/nginx# js test.js
> Initial resp is Start
> In loop resp is StartAndContinue
> End Resp is : StartAndContinue
> 
> 
> With NJS :
> 
> root at linux3:/etc/nginx# njs test.js
> ReferenceError: "resp" is not defined in 16
> 
> 
> Don't know why it doesn't work the same in both runtime.

Currently, njs requires all the variables to be declared.
Adding 'var resp;' at the beginning of the file helps.

docker run -i -t nginx:latest /usr/bin/njs
interactive njs 0.2.4

v.<Tab> -> the properties and prototype methods of v.
type console.help() for more information

 >> var resp; function my() { resp = "Start"; console.log ('Initial resp 
is ' + resp); function done() { resp += "AndContinue"; console.log('In 
loop resp is ' + resp)}; done()}; resp = 'empty'; my(); console.log('End 
Resp is : ' + resp)
'Initial resp is Start'
'In loop resp is StartAndContinue'
'End Resp is : StartAndContinue'
undefined
 >>





> 
> Thanks
> 
> Posted at Nginx Forum: https://forum.nginx.org/read.php?2,281699,281747#msg-281747
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
> 


More information about the nginx mailing list