在下面的例子存儲在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」,但它不會從匿名函數外部可見。 –