我想知道爲什麼Vector變量這種自我執行JavaScript函數不需要前一個變種中定義的?這只是創建命名函數的其他類型的語法嗎?這是否這樣做,所以我們不能將Vector作爲參數傳遞給其他函數?JavaScript函數定義
(function() {
Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
//...snip
})()
我想知道爲什麼Vector變量這種自我執行JavaScript函數不需要前一個變種中定義的?這只是創建命名函數的其他類型的語法嗎?這是否這樣做,所以我們不能將Vector作爲參數傳遞給其他函數?JavaScript函數定義
(function() {
Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
//...snip
})()
定義Vector
任何其他方式只會封閉的範圍內創建;並且在關閉之外將不可用。
(function() {
var Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
function Vector() {
// blah
};
//...snip
})()
var something = new Vector() // ERROR :<
沒有 「要求」 的var
關鍵詞;使用它定義變量可用的範圍。不使用它意味着變量是在全局範圍內創建的。
定義的變量,而不var
使得全球。上述
的代碼構造使得向量在命名空間,因爲它可能是打算用作構造,這可能是確定一個全局變量。
我不會建議增加全局命名空間,其實看看requirejs它的一個非常好的方式與模塊化的JS工作。
Vector
在這種情況下將附加到當前this
這將是window
。至少在你提供的代碼中,似乎並不需要包含自我執行功能。
感謝大家的幫助。 VS2008 JS智能感知可能更多的問題;但由於某些原因,Vector並沒有出現在自執行功能之外...... – Pierreten 2010-05-07 18:29:50