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

資訊專欄INFORMATION COLUMN

javascript-- (function(){...})() 閉包

missonce / 1683人閱讀

摘要:首先從我們常見的函數(shù)開始函數(shù)聲明關(guān)鍵字聲明一個(gè)函數(shù),再指定函數(shù)名匿名函數(shù),聲明了函數(shù)但沒指定函數(shù)名。匿名函數(shù)體內(nèi)形成一個(gè)子作用域,這個(gè)子作用域可以調(diào)用外部作用域的變量,但外部作用域不可以調(diào)用子作用域的變量。

首先從我們常見的javascript函數(shù)開始:

function funName(){...};//函數(shù)聲明,function關(guān)鍵字聲明一個(gè)函數(shù),再指定funame函數(shù)名
function(){...};//匿名函數(shù),聲明了函數(shù)但沒指定函數(shù)名。 附給一個(gè)變量——函數(shù)表達(dá)式;附給一個(gè)事件——事件處理程序(object.onclick=function(){...};);創(chuàng)建閉包...
var funName=function(){...}; //函數(shù)表達(dá)式,將匿名函數(shù)附給一個(gè)變量。

function funName(){alert("hello world");}
funName();
//這樣調(diào)用函數(shù)

function(){alert("hello World");}
(function(){alert("hello World");})();
//這樣直接調(diào)用,或者(function(){alert("hello World");}());這兩個(gè)沒有區(qū)別哦

var fnName=function(){
    alert("Hello World");
}();
//函數(shù)表達(dá)式后加()直接調(diào)用  

function fnName(){
    alert("Hello World");
}();
//報(bào)錯(cuò)

如何傳參

(function(a){alert(a);})(123);
new function(a){alert(a);}(123);

結(jié)論 X()要想通過加括號(hào)直接運(yùn)行,那么X必須是一個(gè)函數(shù)表達(dá)式。(function(){alert("hello World");})();中外面的括號(hào)是一個(gè)分組操作符,會(huì)讓解析器強(qiáng)制將JSON的花括號(hào)解析成表達(dá)式而不是代碼塊。

作用
(function(){...})()稱為閉包。

匿名函數(shù)體內(nèi)形成一個(gè)子作用域,這個(gè)子作用域可以調(diào)用外部作用域的變量,但外部作用域不可以調(diào)用子作用域的變量。這樣便不會(huì)污染全局變量。

這種方式可以保存閉包外面的變量的狀態(tài)
舉例

function fn() {
    for(var i=0 ; i<2; i++) {
        var variate= i;
        setTimeout(function() {
            alert(variate);
        }, 2000);
    }
} 
fn();//1,1

function fn() {
    for(var i=0 ; i<2; i++) {
    (function(){
        var variate= i;
        setTimeout(function() {
            alert(variate);
        }, 2000);
    })();
    }
} 
fn();//0,1

如有不對(duì),還請(qǐng)指正。本文參考如下二位作者,感謝
鏈接描述
鏈接描述

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86847.html

相關(guān)文章

  • Javascript閉包入門(譯文)

    摘要:也許最好的理解是閉包總是在進(jìn)入某個(gè)函數(shù)的時(shí)候被創(chuàng)建,而局部變量是被加入到這個(gè)閉包中。在函數(shù)內(nèi)部的函數(shù)的內(nèi)部聲明函數(shù)是可以的可以獲得不止一個(gè)層級(jí)的閉包。 前言 總括 :這篇文章使用有效的javascript代碼向程序員們解釋了閉包,大牛和功能型程序員請(qǐng)自行忽略。 譯者 :文章寫在2006年,可直到翻譯的21小時(shí)之前作者還在完善這篇文章,在Stackoverflow的How do Java...

    Fourierr 評(píng)論0 收藏0
  • 理解Javascript閉包

    摘要:但是閉包也不是什么復(fù)雜到不可理解的東西,簡(jiǎn)而言之,閉包就是閉包就是函數(shù)的局部變量集合,只是這些局部變量在函數(shù)返回后會(huì)繼續(xù)存在。可惜的是,并沒有提供相關(guān)的成員和方法來訪問閉包中的局部變量。 (收藏自 技術(shù)狂) 前言:還是一篇入門文章。Javascript中有幾個(gè)非常重要的語言特性——對(duì)象、原型繼承、閉包。其中閉包 對(duì)于那些使用傳統(tǒng)靜態(tài)語言C/C++的程序員來說是一個(gè)新的語言特性。本文將...

    dayday_up 評(píng)論0 收藏0
  • JavaScript 閉包

    摘要:閉包的注意事項(xiàng)通常,函數(shù)的作用域及其所有變量都會(huì)在函數(shù)執(zhí)行結(jié)束后被銷毀。但是,在創(chuàng)建了一個(gè)閉包以后,這個(gè)函數(shù)的作用域就會(huì)一直保存到閉包不存在為止。最后通過釋放了和對(duì)閉包的引用。從而使用閉包模塊化代碼,減少全局變量的污染。 JavaScript 閉包 原文鏈接 什么是閉包(Closure) 簡(jiǎn)單講,閉包就是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)。 MDN 上面這么說:閉包是一種特殊的...

    zhou_you 評(píng)論0 收藏0
  • JavaScript閉包,只學(xué)這篇就夠了

    摘要:當(dāng)在中調(diào)用匿名函數(shù)時(shí),它們用的都是同一個(gè)閉包,而且在這個(gè)閉包中使用了和的當(dāng)前值的值為因?yàn)檠h(huán)已經(jīng)結(jié)束,的值為。最好將閉包當(dāng)作是一個(gè)函數(shù)的入口創(chuàng)建的,而局部變量是被添加進(jìn)這個(gè)閉包的。 閉包不是魔法 這篇文章使用一些簡(jiǎn)單的代碼例子來解釋JavaScript閉包的概念,即使新手也可以輕松參透閉包的含義。 其實(shí)只要理解了核心概念,閉包并不是那么的難于理解。但是,網(wǎng)上充斥了太多學(xué)術(shù)性的文章,對(duì)于...

    CoderBear 評(píng)論0 收藏0
  • [學(xué)習(xí)筆記] JavaScript 閉包

    摘要:但是,必須強(qiáng)調(diào),閉包是一個(gè)運(yùn)行期概念。通過原型鏈可以實(shí)現(xiàn)繼承,而與閉包相關(guān)的就是作用域鏈。常理來說,一個(gè)函數(shù)執(zhí)行完畢,其執(zhí)行環(huán)境的作用域鏈會(huì)被銷毀。所以此時(shí),的作用域鏈雖然銷毀了,但是其活動(dòng)對(duì)象仍在內(nèi)存中。 學(xué)習(xí)Javascript閉包(Closure)javascript的閉包JavaScript 閉包深入理解(closure)理解 Javascript 的閉包JavaScript ...

    sunsmell 評(píng)論0 收藏0
  • 理解 JavaScript 閉包

    摘要:如何在初學(xué)就理解閉包你需要接著讀下去。這樣定義閉包是函數(shù)和聲明該函數(shù)的詞法環(huán)境的組合。小結(jié)閉包在中隨處可見。閉包是中的精華部分,理解它需要具備一定的作用域執(zhí)行棧的知識(shí)。 這是本系列的第 4 篇文章。 作為 JS 初學(xué)者,第一次接觸閉包的概念是因?yàn)閷懗隽祟愃葡旅娴拇a: for (var i = 0; i < helpText.length; i++) { var item = he...

    寵來也 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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