1. 程式人生 > >立即執行函數

立即執行函數

函數 變量 常見 求解 com span 函數表 str 函數表達式

1.知識點

1.1 函數聲明:function fnName() {...} ;(函數聲明提升,以 fnName() 形式調用)

使用 function 關鍵字聲明一個函數,再給一個函數名,叫函數聲明;

1.2 函數表達式: var fnName = function() { ... } ; (後加括號立即調用並返回值給變量)

使用 function 關鍵字聲明一個函數,但未給函數命名,最後將匿名函數賦予一個變量,叫函數表達式;

1.3 匿名函數: function() { ... }

無名函數表達式

1.4 函數表達式加運算符立即執行

1.5原理:

1.5.1 js在"預編譯"階段, 會解釋函數聲明, 但卻會忽略表達式.

1.5.2 當js執行到function() {//code}();時, 由於function() {//code}在"預編譯"階段已經被解釋過, js會跳過function(){//code}, 試圖去執行();, 故會報錯; (不正確寫法: function(){}() )

1.5.3 當js執行到(function {// code})();時, 由於(function {// code})是表達式, js會去對它求解得到返回值, 由於返回值是一 個函數, 故而遇到();時, 便會被執行.

2.用法

2.1 最普通寫法

(function() { ... })() (function(a) { ... })(12)

(最常用:第一個括號用於分割形成小塊代碼段,第二個括號為常見的函數執行小括號)

(function(){ ... }()) (function(a) { ... }(12) )

!function(a) { console.log(a); }(12345);

2.2 常見寫法

2.2.1 結合jq封裝插件(代碼在jq之後)

(function ($) {

        $.fn.test111 = function () {
            alert(‘test‘)
        }
})(jQuery);

$("#elementid").test111();
2.2.2 命名空間
var nameSpace = nameSpace || {};
(function () { nameSpace.ns = function () { } }; })();

3.意義:創建局部作用域、命名空間、閉包、功能封裝

立即執行函數