在浏览器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有什么区别?