国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

談談javascript的函數表達式及其應用

lixiang / 2904人閱讀

摘要:函數表達式語法如下函數體如上所示當我們輸出函數名時返回了空字符串,因為關鍵字后面沒有標識符,這種情況下創建的函數為匿名函數。接下來我們就談談利用函數表達式所創建的匿名函數有什么應用。操作方法聲明匿名函數,立馬調用。

我們都知道定義函數的方式有兩種,一種是函數聲明,另外一種就是函數表達式。

函數聲明

語法為:function關鍵字后跟函數名。例如:

function functionName(arg0) {
    //函數體
}
alert(functionName.name)  // "functionName"

函數聲明最主要的特征就是函數聲明的提升,所以我們可以把函數聲明放在調用它的語句的后面,因為執行代碼前會先讀取函數聲明。比如:

hello();
function hello(){
    alert("hello");
}

上面的代碼可以在瀏覽器正常運行。

函數表達式

語法如下:

var functionName = function(arg0){
    //函數體
};
alert(functionName.name)  // ""

如上所示當我們輸出函數名時返回了空字符串,因為function關鍵字后面沒有標識符,這種情況下創建的函數為匿名函數。接下來我們就談談利用函數表達式所創建的匿名函數有什么應用。

應用

函數表達式最典型的應用就是模仿塊級作用域,我們都知道JavaScript沒有塊級作用域,不過我們可以用函數表達式模仿塊級作用域。形成獨立作用域,從而避免全局污染。
操作方法:聲明匿名函數,立馬調用。
最經典的例子:

function createFunctions(){
    var result = [];
    for (var i=0; i < 10; i++){
        result[i] = function(){
            return i;
        };
    }
    return result;
}
createFunctions();

乍一看每個函數都應該返回自己的索引值,即位置0的函數返回0,1的返回1,以此類推。實際上每個函數都將返回10,因為這里的i是貫穿整個作用域的,我們把上面代碼修改一下:

//寫法1
(function(){
    //這里是塊級作用域
    var result = [];
    for(var i=0;i<10;i++){
        result[i] = (function(num){
            return function(){
                return num;
            };
        }(i))();
    }
    return result;
})();   //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
//寫法2
var hasfunction = function(){
    var result = [];
        for(var i=0;i<10;i++){
            result[i] = (function(num){
                return function(){
                    return num;
            };
        }(i))();
    }
    return result;
}
hasfunction();

在立即執行函數執行的時候,i的值被賦值給num,同時創建返回num的閉包,從而result數組每個函數都有一個num變量的副本。

完。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80782.html

相關文章

  • 談談 <script> 標簽以及其加載順序問題,包含 defer & async

    摘要:標簽加載順序如果要談標簽加載順序問題,首先要談的就是標簽的位置,因為標簽的位置對于加載順序來說有著很重要的影響。例如標簽在以上代碼中,可能由于下載時間比較長,由于兩個標簽都是異步執行,互不干擾,因此可能就會先于執行。 談談 標簽加載順序的問題 這篇文章比較長,如果你耐心讀完了,我會感謝你愿意在這篇文章上花費時間,也希望你有收獲。 其實說起,幾乎搞前端的都知道他的作用:引入 JavaS...

    alexnevsky 評論0 收藏0
  • 談談JavaScript中function多重理解

    摘要:中的有多重意義。它可能是一個構造器,承擔起對象模板的作用可能是對象的方法,負責向對象發送消息。語義匿名函數處理某些特殊效果如處理一些數據又不想暴露過多的變量判斷版本的方式最終只要一個結果,匿名函數內部用到了一些局部變量全部可以隔離開。 JavaScript 中的 function 有多重意義。它可能是一個構造器(constructor),承擔起對象模板的作用; 可能是對象的方法(met...

    muzhuyu 評論0 收藏0
  • 從html,css,javascript三方面談談“瀏覽器兼容性”問題

    摘要:可以理解為,在屏幕上通過瀏覽器窗口所能看到網頁內容的高度。都表示瀏覽器中網頁內容的高度,但稍有區別。解決等瀏覽器不支持標簽的問題高版本的瀏覽器用了低版本的瀏覽器無法識別的元素,從而導致不能解析。這時候我們就會面臨這個兼容性問題。 javaScript 在IE、FireFox、Netscape等不同的瀏覽器里,對于document.body的clientHeight、offsetHeig...

    William_Sang 評論0 收藏0
  • 從html,css,javascript三方面談談“瀏覽器兼容性”問題

    摘要:可以理解為,在屏幕上通過瀏覽器窗口所能看到網頁內容的高度。都表示瀏覽器中網頁內容的高度,但稍有區別。解決等瀏覽器不支持標簽的問題高版本的瀏覽器用了低版本的瀏覽器無法識別的元素,從而導致不能解析。這時候我們就會面臨這個兼容性問題。 javaScript 在IE、FireFox、Netscape等不同的瀏覽器里,對于document.body的clientHeight、offsetHeig...

    Kaede 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<