在以下示例中
var foo = "bar;
(function () {
var hello = "world";
debugger;
}());
变量foo在全局范围内声明,因此它成为window
的属性,表达式window.foo
返回" bar"。
如果我停在 iife 的断点处并在终端中输入hello
,它将返回world。
但是哪个对象是变量hello
存储在?
答案 0 :(得分:2)
它的本地范围仅限于匿名函数
除非指定它不会与任何对象相关联。在您的代码中,它独立存在为hello本身,并且不能在该函数旁边访问
var foo = "bar;
(function () {
var hello = "world";
debugger;
}());
如果您希望它与任何对象相关联,您可以将其作为
var foo = "bar";
var obj={};
(function () {
obj.hello="world";
console.log(obj.hello);
})()
console.log(obj.hello);

希望这有帮助
答案 1 :(得分:0)
全局范围变量是向NodeJS中的全局对象window
或global
添加属性的语法糖:var a = 11;
与window.a = 11;
相同。
局部变量如何存储在内存中是一个具体的JavaScript运行时实现细节。我不介意如何存储,因为它对像JavaScript这样的高级语言没兴趣。它们只是变量,就像任何其他旧的或现代的编程语言一样。
也许您会发现这个其他Q& A是了解有关JavaScript范围的更多信息的好资源:What is the scope of variables in JavaScript?