事實證明,有一個類似的問題,What does 「options = options || {}」 mean in Javascript?,但這個問題是普遍的 - 我特別要求關於在JavaScript文件的頂部發生這樣的聲明。我已經明白,如果foo
尚未定義,那麼它將用一個空對象進行初始化。同樣,我的問題特別提到了這個用法,作爲Javascript文件頂部的第一條語句。爲什麼會這樣做?爲了防止對象被之前加載的文件的賦值覆蓋?在我發現的情況下,有沒有更早加載的文件 - 因此,我的問題:`foo = window.foo || {};`在JavaScript文件的頂部?
問題:什麼是window.foo
在下面的語句,這是第一條語句在一個Javascript的頂端文件點(即相反,只是說foo = {};
)?
foo = window.foo || {};
注意的是,文件中的後續行定義的屬性和方法:
foo.one = 'one';
foo.two = function() {
return 1+1;
}
他們被用來作爲foo.one;
和foo.two();
(後續)問題2:什麼是上述方法的優點(以及術語上的差異)與定義如下非常相同的東西相比:
var one = 'one';
function two() {
return 1+1;
}
他們被用來作爲one;
和two();
此外,上述所有的也可以訪問通過window
:window.foo.one;
和window.one;
和window.foo.two();
和window.two();
。
(後續)問題3:我所定義的最外層範圍內的所有內容都與window
相關嗎?那是什麼意思? (即,如果不是?)
那麼,在第一種情況下,你有一個受控的唯一命名空間。在第二種情況下,您正在污染全球範圍,並且您可能會與其他圖書館發生衝突。 – elclanrs
啊,對。污染全球範圍。 – user664833
爲什麼每個問題發佈三個問題?我想你在這裏已經足夠長,知道比這更好。 –