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

資訊專欄INFORMATION COLUMN

JS變量提升的一些想法

kbyyd24 / 2794人閱讀

摘要:函數(shù)聲明被提升時,聲明和賦值兩個步驟都會被提升,而普通變量卻只能提升聲明步驟,而不能提升賦值步驟。變量被提升過后,先對提升上來的所有對象統(tǒng)一執(zhí)行一遍聲明步驟,然后再對變量執(zhí)行一次賦值步驟。

專欄剛剛開通, 先把自己以前寫的一些沒人看的答案搬運過來填補一下空白.

變量的問題,莫過于聲明賦值兩個步驟,而這兩個步驟是分開的。

函數(shù)聲明被提升時,聲明和賦值兩個步驟都會被提升,

而普通變量卻只能提升聲明步驟,而不能提升賦值步驟。

變量被提升過后,先對提升上來的所有對象統(tǒng)一執(zhí)行一遍聲明步驟,

然后再對變量執(zhí)行一次賦值步驟。

而執(zhí)行賦值步驟時,會優(yōu)先執(zhí)行函數(shù)變量的賦值步驟,再執(zhí)行普通變量的賦值步驟。

當你明白這三點后,一切都豁然開朗了。

首先來看一個DEMO:

(function(){
        
        function a(){};
        var a;
        alert(typeof a); //function
    })();

先提升兩個a,然后執(zhí)行函數(shù)的賦值步驟,a沒有被賦值,故結(jié)果為function

再看一個:

 (function(){
        alert(typeof a);//function
        function a(){};
        var a = 1;
         
    })();

先提升兩個a,再執(zhí)行函數(shù)的賦值步驟,

因為在alert語句執(zhí)行以前,還未執(zhí)行a = 1的賦值步驟,函數(shù)不會被覆蓋,故為function

來個最有說服力的:

(function(){ 
            var a = 1;
            function a(){};
            alert(typeof a); //number
        })();

在alert語句執(zhí)行之前,a = 1步驟和函數(shù)賦值步驟均已執(zhí)行,

而且函數(shù)還在a = 1賦值語句之后,但是仍然輸出number,

就是因為函數(shù)的賦值步驟會先于a = 1的賦值步驟,函數(shù)被覆蓋,故輸出number。

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

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

相關(guān)文章

  • 詳解js變量聲明提升

    摘要:換句話說,在代碼執(zhí)行之前,會對作用域鏈中所有變量和函數(shù)聲明先處理完先。總結(jié)一句話就是只有聲明被提升,而賦值或其他運算會留在原地。為其聲明變量隱性劫持到所在區(qū)域中。 之前一直覺會認為javascript代碼執(zhí)行是由上到下一行行執(zhí)行的。自從看了《你不知道的JS》后發(fā)現(xiàn)這個觀點并不完全正確。先來給大家舉一個書本上的的例子: var a=hello world; var a; co...

    NSFish 評論0 收藏0
  • Javascript元編程之Annotation

    摘要:事實上,實現(xiàn)元編程有多種方式,從語言本身來講,可以分為兩類增強型與新的語法實現(xiàn),前者的代表是反射,后者的代表為。在第二部分,我們嘗試在語言基礎(chǔ)上增加原生的元編程能力并介紹了該思路的實現(xiàn)框架。 語言的自由度 自由度這個概念在不同領(lǐng)域有不同的定義,我們借鑒數(shù)學中構(gòu)成一個空間的維數(shù)來表達其自由度的做法,在此指的是:解決同一個問題彼此不相關(guān)的設(shè)計方法學數(shù)量。 例如,解決一個比如商品打折的問題,...

    SegmentFault 評論0 收藏0
  • Javascript元編程之Annotation

    摘要:事實上,實現(xiàn)元編程有多種方式,從語言本身來講,可以分為兩類增強型與新的語法實現(xiàn),前者的代表是反射,后者的代表為。在第二部分,我們嘗試在語言基礎(chǔ)上增加原生的元編程能力并介紹了該思路的實現(xiàn)框架。 語言的自由度 自由度這個概念在不同領(lǐng)域有不同的定義,我們借鑒數(shù)學中構(gòu)成一個空間的維數(shù)來表達其自由度的做法,在此指的是:解決同一個問題彼此不相關(guān)的設(shè)計方法學數(shù)量。 例如,解決一個比如商品打折的問題,...

    lifesimple 評論0 收藏0
  • javascript聲明提升

    摘要:但是碰到聲明提升,這種想法就會被打破。聲明一個函數(shù)進行相應的操作,會得到函數(shù)聲明提升的結(jié)果。由此可以發(fā)現(xiàn)變量和函數(shù)的聲明都會被提升在其他代碼的前面執(zhí)行。一個普通塊內(nèi)部的函數(shù)聲明通常會被提升到所在的作用域的頂部。的創(chuàng)建初始化和賦值均會被提升。 Javascript聲明提升 在分析聲明提升之前,我認為有必要知道的兩點: 一、引擎查詢變量的兩種方式 引擎查詢變量的方式可以分為LHS和RHS兩...

    evin2016 評論0 收藏0

發(fā)表評論

0條評論

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