javascript - Node.js 中的全局变量隐藏在哪里?

标签 javascript node.js

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/

相关文章:

node.js - NodeJS v12 重新启用 TLS 1.1 和 1.0

javascript - 如何使用 javascript 更改 Canvas 的颜色?

javascript - 覆盖后按 react native 路由器通量

javascript - Webpack 拆分块未被执行

javascript - Express 的子域名、重定向和静态文件

node.js - 如何使用 json-server 部署reactJS应用程序

javascript - 查询 : Disabled 'input' field not available in form

javascript - 如何创建一个自动完成的组合框?

javascript - Nodejs 从 Promis 返回结果并将变量作为函数异步分配

node.js - 如何在 Node.js 中处理这个问题