在下面的例子存储在IIFE中声明的变量的位置?
var foo = "bar;
(function() {
var hello = "world";
debugger;
}());
变量foo是全球范围内声明,因此变得的window
一个属性和表达window.foo
返回“栏”。
如果我停在终端中的Iff和类型hello
的断点处,它将返回世界。
但是存储在哪个对象变量hello
?
在下面的例子存储在IIFE中声明的变量的位置?
var foo = "bar;
(function() {
var hello = "world";
debugger;
}());
变量foo是全球范围内声明,因此变得的window
一个属性和表达window.foo
返回“栏”。
如果我停在终端中的Iff和类型hello
的断点处,它将返回世界。
但是存储在哪个对象变量hello
?
除非它不会与任何object.In你的代码它为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);
希望这有助于
全球范围变量将属性添加到该的NodeJS全局对象window
或global
的语法糖:var a = 11;
是一样的window.a = 11;
。
本地变量如何存储在内存中是一个具体的JavaScript运行时实现细节。我不介意如何存储,因为它对JavaScript等高级语言没有兴趣。他们只是变量像任何其他旧的或现代的编程语言。
也许你会发现这个其他Q &一个一个很好的资源,以了解更多关于JavaScript的作用域:What is the scope of variables in JavaScript?
将有局部范围仅限于匿名函数 – Geeky
肯定,但它是一个变量引用? – Lev
它将在函数中被本地引用为“hello”,但它不会从匿名函数外部可见。 –