成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

談?wù)刯avascript的函數(shù)表達(dá)式及其應(yīng)用

lixiang / 2907人閱讀

摘要:函數(shù)表達(dá)式語法如下函數(shù)體如上所示當(dāng)我們輸出函數(shù)名時(shí)返回了空字符串,因?yàn)殛P(guān)鍵字后面沒有標(biāo)識(shí)符,這種情況下創(chuàng)建的函數(shù)為匿名函數(shù)。接下來我們就談?wù)劺煤瘮?shù)表達(dá)式所創(chuàng)建的匿名函數(shù)有什么應(yīng)用。操作方法聲明匿名函數(shù),立馬調(diào)用。

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

函數(shù)聲明

語法為:function關(guān)鍵字后跟函數(shù)名。例如:

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

函數(shù)聲明最主要的特征就是函數(shù)聲明的提升,所以我們可以把函數(shù)聲明放在調(diào)用它的語句的后面,因?yàn)閳?zhí)行代碼前會(huì)先讀取函數(shù)聲明。比如:

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

上面的代碼可以在瀏覽器正常運(yùn)行。

函數(shù)表達(dá)式

語法如下:

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

如上所示當(dāng)我們輸出函數(shù)名時(shí)返回了空字符串,因?yàn)閒unction關(guān)鍵字后面沒有標(biāo)識(shí)符,這種情況下創(chuàng)建的函數(shù)為匿名函數(shù)。接下來我們就談?wù)劺煤瘮?shù)表達(dá)式所創(chuàng)建的匿名函數(shù)有什么應(yīng)用。

應(yīng)用

函數(shù)表達(dá)式最典型的應(yīng)用就是模仿塊級(jí)作用域,我們都知道JavaScript沒有塊級(jí)作用域,不過我們可以用函數(shù)表達(dá)式模仿塊級(jí)作用域。形成獨(dú)立作用域,從而避免全局污染。
操作方法:聲明匿名函數(shù),立馬調(diào)用。
最經(jīng)典的例子:

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

乍一看每個(gè)函數(shù)都應(yīng)該返回自己的索引值,即位置0的函數(shù)返回0,1的返回1,以此類推。實(shí)際上每個(gè)函數(shù)都將返回10,因?yàn)檫@里的i是貫穿整個(gè)作用域的,我們把上面代碼修改一下:

//寫法1
(function(){
    //這里是塊級(jí)作用域
    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();

在立即執(zhí)行函數(shù)執(zhí)行的時(shí)候,i的值被賦值給num,同時(shí)創(chuàng)建返回num的閉包,從而result數(shù)組每個(gè)函數(shù)都有一個(gè)num變量的副本。

完。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80782.html

相關(guān)文章

  • 談?wù)?/em> <script> 標(biāo)簽以及其加載順序問題,包含 defer & async

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

    alexnevsky 評論0 收藏0
  • 談?wù)?/em>JavaScript中function多重理解

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

    muzhuyu 評論0 收藏0
  • 從html,css,javascript三方面談?wù)?/em>“瀏覽器兼容性”問題

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

    William_Sang 評論0 收藏0
  • 從html,css,javascript三方面談?wù)?/em>“瀏覽器兼容性”問題

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

    Kaede 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<