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();