2012-09-18 65 views

回答

1

大多數情況下,當您看到該模式時,他們確保'未定義'確實是未定義的。看看他們在底部如何不通過任何論點。

這是一個自動執行功能,您可以傳遞參數給它。

(function(undefined) { // no parameters are passed in so undefined is undefined. 
"use strict"; 

})(/*no parameters passed*/) 

如果您的代碼使用不確定的,你需要確保一些其他的JavaScript庫不會改變的不確定的含義,那麼你可能需要使用這種模式。然而,這不是一般的情況,它只是一個安全網。由於某種原因,在javascript'undefined'中可以像設置其他變量一樣設置一個值。

+0

感謝您的回答。無論如何,我的問題是應該總是使用未定義的參數。如果不是當? –

+1

@LorraineBernard - 取決於你是多麼偏執。在我的網站上,我不使用隨機的第三方代碼,我使用的一些庫的表現非常好,所以我不使用這種模式。如果您正在編寫可能包含在不受您控制的隨機頁面中的JS的snippits,那麼您可能需要更高級別的編碼偏執狂。 –

2

在Javascript中,undefined不是一個特殊關鍵字。這是一個常規的全球變量。

如果undefined被外部代碼改變,它可能會導致奇怪的錯誤。有些人在其undefined的函數聲明中聲明瞭一個未使用的參數,因此該函數將具有一個名爲undefined的變量,其已知值爲undefined

var undefined在函數體中做同樣的事情,但需要多一些字節。

+0

感謝您的回答。無論如何,我的問題是應該總是使用未定義的參數。如果不是當? –

+0

每當你擔心有人可能用'undefined.'取代它,這取決於你是否完全控制了你的代碼,或者你的代碼是否與可能破壞/敵對的代碼混合並匹配。 –