var vs let in节点(模块作用域)

时间:2019-11-15 23:32:51

标签: javascript node.js

在浏览器Javascript中,当用var声明变量时,该变量将附加到window对象,如果同一变量使用用var声明的同名变量,则可能导致覆盖或窗口中的其他文件。这就是为什么有人说“变量是全局变量”的原因,应该避免:

//Browser JS
var my_var = 3
let my_let = 3

console.log("window.my_var = " + window.my_var)
console.log("window.my_let = " + window.my_let)

返回

3
undefined

符合预期。

类似地,节点具有global对象。我知道var声明的变量不会附加到global,因为node与模块一起工作。但是,似乎var声明的变量未附加到module对象:

//Node JS
var my_var = 3
let my_let = 3

console.log("module.my_var = " + module.my_var)
console.log("module.my_let = " + module.my_let)

返回

module.my_var = undefined
module.my_let = undefined

为什么my_var未附加到module?有模块范围吗?是否附加在其他地方? var和let in node有什么区别?

0 个答案:

没有答案