Node中的全局变量在哪里.js隐藏
Where is the global variable in Node.js hiding?
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)
但现在这更让我困惑?!为什么局部变量会 在返回语句之后从未到达的赋值,将 搞砸了全局变量赋值?
因为吊装。赋值永远不会到达并执行,但变量已在当前范围内使用 var
关键字声明。就像函数声明一样,它们在您进入(函数)作用域时可用。您的代码等效于
var a;
a = 555
console.log(global.a)
return;
a = Math.pow(4, 3)
我刚刚在节点 v0.8.11 中创建这个。看起来它工作正常。http://ideone.com/2cnEFe
a = 555
console.log(global.a)
编辑:回答你的第二个问题,当你做这样的事情时
var a = 555;
该变量将在本地范围内创建。但是当你这样做时
a = 555;
该变量将在全局范围内创建。但是当你这样做时。
a = 555;
var a;
该变量仍将仅在局部范围内创建。因此,在下面的代码中,a
不会创建为global
变量。这就是为什么你会得到一个undefined
.
a = 555
console.log(global.a)
return;
var a = Math.pow(4, 3)
阅读有关声明中缺少var
的有趣故事。一个失踪VAR
如何毁了我们的发布
你不需要global
来查找代码中的拼写错误。
最好的方法是启用严格模式。
有两种方法可以做到这一点。
第一种方法是在启动节点应用程序时使用 v8 选项全局启用它--use_strict
。我不确定如果您使用的是显然使用的第三方模块,这是否是一个好主意。
第二种方法是添加
"use strict";
位于项目中每个.js
文件的顶部。
更新
至于你的第二个问题,请参阅var上的MDN文档。
- JS:隐藏元素上的事件侦听器
- Ember.js-隐藏嵌套资源中的父视图
- Three.js隐藏已加载模型的对象
- 使用JS隐藏Div(简单)
- jQuery/JS-隐藏特定的动态创建的元素/按钮
- HTML/JS 隐藏 基于另一个选定值选择选项
- Node中的全局变量在哪里.js隐藏
- 使用挖空.js隐藏/取消隐藏时不应用 jquery UI 主题
- 无法使用Angular.js隐藏表格行的按钮
- 幻灯片JS隐藏分页
- JS:隐藏其他脚本的变量
- 用js隐藏HTML表行<tr>从而不占用空间
- 如何从angular中的控制器js隐藏ng控制器之外的元素
- Angular JS:隐藏/关闭模态
- 硒,Js隐藏的Xpath
- JS隐藏按钮时更改选择选项
- 用js隐藏选定文本
- 使用react js隐藏行中的特定元素
- Ionic Angular js 隐藏的输入值未显示在另一个页面中
- 用CSS或JS隐藏顺序回车