成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JS變量提升的一些想法

kbyyd24 / 2827人閱讀

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

專欄剛剛開(kāi)通, 先把自己以前寫的一些沒(méi)人看的答案搬運(yùn)過(guò)來(lái)填補(bǔ)一下空白.

變量的問(wèn)題,莫過(guò)于聲明賦值兩個(gè)步驟,而這兩個(gè)步驟是分開(kāi)的。

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

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

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

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

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

當(dāng)你明白這三點(diǎn)后,一切都豁然開(kāi)朗了。

首先來(lái)看一個(gè)DEMO:

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

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

再看一個(gè):

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

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

因?yàn)樵赼lert語(yǔ)句執(zhí)行以前,還未執(zhí)行a = 1的賦值步驟,函數(shù)不會(huì)被覆蓋,故為function

來(lái)個(gè)最有說(shuō)服力的:

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

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

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

就是因?yàn)楹瘮?shù)的賦值步驟會(huì)先于a = 1的賦值步驟,函數(shù)被覆蓋,故輸出number。

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

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

相關(guān)文章

  • 詳解js變量聲明提升

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

    NSFish 評(píng)論0 收藏0
  • Javascript元編程之Annotation

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

    SegmentFault 評(píng)論0 收藏0
  • Javascript元編程之Annotation

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

    lifesimple 評(píng)論0 收藏0
  • javascript聲明提升

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

    evin2016 評(píng)論0 收藏0

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

0條評(píng)論

閱讀需要支付1元查看
<