下面的代碼會做什麼?什麼是這個JavaScript
我已經使用了JS多年,但沒有想到這個構造是如何工作的?
(function() { /* No implementation yet */ })();
知道沒有實現 - 如果有 - 我將如何調用它?以下是否會創建一個匿名對象?
var temp = (function() { })();
,我可以用如下:
temp.doWhateverDefined();
下面的代碼會做什麼?什麼是這個JavaScript
我已經使用了JS多年,但沒有想到這個構造是如何工作的?
(function() { /* No implementation yet */ })();
知道沒有實現 - 如果有 - 我將如何調用它?以下是否會創建一個匿名對象?
var temp = (function() { })();
,我可以用如下:
temp.doWhateverDefined();
這是一個匿名函數,所以,除非你把它分配給一個名字
var temp = (function() { })();
你不能調用,您創建超過該行的其他
這段代碼應改爲
var temp = (function() { });
這樣你實際上分配的功能名稱。要調用它只需使用圓括號
temp()
您有immediately invoked function expression (IIFE)。這在JavaScript中很常見。
這就像一個很酷它就像內聯代碼被執行,但在一個函數範圍 - 但沒有明確調用任何函數? – 2013-05-10 17:31:04
@ Alex.Barylski它顯式調用包裝代碼的匿名函數。在JavaScript中,您可以通過添加parens'()'來調用函數。這定義了一個函數,然後通過在末尾附加'()'來立即調用它。值得注意的是,最終的'()'可以在OR包圍之外。 '(function(){}())'和'(function(){})()'一樣好' – Mathletics 2013-05-10 17:34:03
這是一個自我執行的功能。你不會調用它,它會自動執行。
var temp = (function() { })();
會工作,如果函數返回的東西。
立即運行。這是因爲如果你說:
var f = function() { /* No implementation yet */ }
(f)();
這是一樣的
var f = function() { /* No implementation yet */ }
f();
它的要點是允許的代碼(頁面初始化等)的模塊使用任何變量/函數名它喜歡,而不會與其他可能使用相同名稱的Javascript代碼相沖突。所有功能/等。在該區塊宣佈的是本地的,不會傷害外部世界。
(function() { /* No implementation yet */ })();
這被稱爲立即調用函數表達式或簡稱爲IIFE。它被立即聲明,評估和調用。
的基本思路是:
var x = (function() { return 5;})();
alert(x); //5
或* IEFE *?我想這也可以。 ;-) – 2013-05-10 17:26:43
你有什麼是已經被稱爲自調用函數。
var temp = (function() { })();
所以函數必須返回一個功能,使得溫度()或temp.somethin();可能會被觸發。看一個例子以下更多信息,
var temp = (function() { return {
doWhateverDefined: function() {
return 'invoked';}
};
}
)();
alert(temp.doWhateverDefined()); //should alert invoked
謝謝所有的答覆...我有點想它被稱爲立即後被定義,但我很欣賞IIFE博客多數民衆贊成真棒:) – 2013-05-10 17:29:54
除非你從功能有些功能(doWhateverDefined)返回你不能。 – 2013-05-10 17:21:11
它已被調用。它意味着創建一個局部變量作用域的一次性使用函數。 – 2013-05-10 17:22:07
它是一個匿名函數,它剛剛被定義後調用.... – Piyuesh 2013-05-10 17:22:16