格式:
(function())();
解釋:這是相當優雅的**(如果你首次看見可能會一頭霧水:)),包圍函式(function(){})的第一對括號向指令碼返回未命名的函式,隨後一對空括號立即執行返回的未命名函式,括號內為匿名函式的引數。
來個帶引數的例子:
(function
(arg))(
20);
//這個例子返回120。
重要用途:可以用它建立命名空間,只要把自己所有的**都寫在這個特殊的函式包裝內,那麼外部就不能訪問,除非你允許
(function
()function
__addclass(id,classname,classvalue)
window[
'myspace']
={};
window[
'myspace'][
'addclass']
=__addclass;
})();
上面的例子就可以用這種偽命名空間封裝並保護自己的所有函式、物件和變數。而且,由於它們位於同乙個函式中,所以可以互相引用。為了對受保護的**進行全域性化,隨後的一對括號告訴瀏覽器立即執行返回的匿名函式,而且在執行期間將__addclass()賦值給了window的乙個方法,這樣在外部只能執行addclass而__addclass被保護起來了。我可以這樣呼叫它:myspace.addclass('oneid','font-width','bold');
額外看到的乙個例子: (
function()
})()();
理解javascript中的「自動執行函式」
因為之前看了jquery的原始碼,對於原始碼中的一開始的 不是很理解,後來到網上查了查,有了大致的了解,怕忘記了,所以記錄一下。function a 1 上面的 就是乙個自動執行的 函式,和 中的一樣。其中的 function a 是乙個匿名函式,接受乙個引數。隨後的 1 表示對這個匿名函式的呼叫,...
javascript中this執行上下文的改變
this關鍵字引用的是包含它的函式作為某個物件的方法被呼叫時的那個物件。哈哈,先看案例 先編寫乙個庫 function function if arguments.length 1 elements.push element return elements window yc function ad...
自執行函式
var a 2 function foo console.log a 2 由於函式被包含在一對 括號內部,因此成為了乙個表示式,通過在末尾加上另外乙個 可以立即執行這個函式,比如 function foo 第乙個 將函式變成表 達式,第二個 執行了這個函式。這種模式很常見,幾年前社群給它規定了乙個術...