Javascript 如何在嵌套函数中管理全局变量
我有一个简单的要求,我需要Javascript 如何在嵌套函数中管理全局变量,javascript,node.js,napajs,Javascript,Node.js,Napajs,我有一个简单的要求,我需要abc在hello功能中可用,但是得到undefined我知道下面的代码给了我undefined,它应该给我 函数hello(){ 控制台日志(“打印abc”,abc); } 功能测试(){ var abc=“你好”; 你好; } //请尝试这种方式尝试使用let而不是var。 不确定结果,但从技术上讲,let将是块范围的 函数hello(){ console.log(“打印abc”,this.abc); } 功能测试(){ this.abc=“你好”; 你好; }
abc
在hello
功能中可用,但是得到undefined
我知道下面的代码给了我undefined
,它应该给我
函数hello(){
控制台日志(“打印abc”,abc);
}
功能测试(){
var abc=“你好”;
你好;
}
//请尝试这种方式尝试使用let而不是var。 不确定结果,但从技术上讲,let将是块范围的 函数hello(){ console.log(“打印abc”,this.abc); } 功能测试(){ this.abc=“你好”; 你好; }
test()您可以像以前一样全局声明变量
hello()
,然后您可以在任何函数或嵌套函数中使用此变量。我不能,我必须在函数中声明。不确定我是否正确获取此变量。无论如何,我要说的是,您仍然需要依赖词法范围来从函数中引用自由变量。也就是说,你需要一些环境;不一定是全局环境,但也有一些环境。Javascript为您提供了各种方法,使abc
进入hello。您可以使用hello(abc)
将其传递到hello
,然后定义hello
以获取参数。您可以将其分配给双方共享的作用域中的变量。等但是,如果您的需求是在test()
中声明它,并让它在hello()
中可用,那是不会发生的。您应该解释为什么传递数据的常规方法不起作用,否则ti看起来像是一个例子,考虑到此
将是未定义的
,这种方法在严格模式下不是很麻烦吗?
'use strict'
function hello(){
console.log('---------1-------------')
console.log("printing abc ",abc);
}
function test(){
console.log('--------------2-----------')
abc = "hello";
hello();
}
global.abc ='anjj';
var a = test();