a = 555
console.log(global.a)
输出“未定义”
有人告诉我,Node 中的全局变量会指向对象 global
,但我找不到它。
我想要做的是编写一个函数,该函数将“显示我(并且只有我)在程序中创建的所有全局变量”,以便我可以找到拼写错误。 (最近我声明了全局变量starCounter
,而不是分配给本地参数startCounter
)
更新:
我刚刚意识到我的实际测试文件还有两行,这些行导致了问题。
a = 555
console.log(global.a)
return;
var a = Math.pow(4, 3)
但现在这让我更加困惑?!为什么在 return 语句之后永远不会到达的局部变量赋值会搞砸全局变量赋值?
最佳答案
a = 555 console.log(global.a) return; var a = Math.pow(4, 3)
But now this puzzles me even more?! Why would local variable assignment that is never reached after the return statement, would screw up the global variable assignment?
因为hoisting 。赋值永远不会到达并执行,但该变量已在当前作用域中使用 var
keyword 声明 。就像函数声明一样,当您进入(函数)作用域时,它们就可用。您的代码相当于
var a;
a = 555
console.log(global.a)
return;
a = Math.pow(4, 3)
关于javascript - Node.js 中的全局变量隐藏在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19588350/