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

資訊專(zhuān)欄INFORMATION COLUMN

js中的變量提升和函數(shù)提升

ruicbAndroid / 2865人閱讀

摘要:而是一個(gè)更完善的,以前的是不完善的,他定義的變量是以函數(shù)為范圍,而不是正常編程語(yǔ)言中的以一個(gè)大括號(hào)為范圍,比如打印時(shí)仍然會(huì)打印若是一個(gè)沒(méi)接觸過(guò)的人肯定會(huì)大吃一驚,這就是一個(gè)最簡(jiǎn)單的變量提升的例子。

從上周開(kāi)始,我所在的學(xué)習(xí)小組正式開(kāi)始了angular的學(xué)習(xí),angular是全面支持es6的,所以語(yǔ)法上和以前的angular有了很大的不同,比如變量聲明時(shí)就拋棄了var,而選擇了let和const;記得剛開(kāi)始學(xué)習(xí)js的時(shí)候,使用webstrom時(shí)用var,webstrom會(huì)在下面畫(huà)一條小綠線,表示這個(gè)用法,問(wèn)題不大,但是有點(diǎn)問(wèn)題。因?yàn)閣ebstrom推薦使用最新的標(biāo)準(zhǔn),之后問(wèn)過(guò)學(xué)長(zhǎng),他說(shuō)這是es6的語(yǔ)法,暫時(shí)不用管,防止瀏覽器不兼容。

終于,現(xiàn)在到了學(xué)習(xí)es6的時(shí)候。

const與let

const就是定義一個(gè)常量,即一個(gè)無(wú)法改變的量。

而let是一個(gè)更完善的var,以前的var是不完善的,他定義的變量是以函數(shù)為范圍,而不是正常編程語(yǔ)言中的以一個(gè)大括號(hào)為范圍,比如:

function() {

  for(var i=0;i<10;i++){
          var a = "a";
    }

    console.log(a);  // a
}

打印a時(shí)仍然會(huì)打印"a",若是一個(gè)沒(méi)接觸過(guò)js的人肯定會(huì)大吃一驚,這就是一個(gè)最簡(jiǎn)單的變量提升的例子。而let就解決了這個(gè)問(wèn)題。它定義的變量就是塊級(jí)的。

變量提升與函數(shù)提升

上面已經(jīng)說(shuō)了一個(gè)變量提升的最簡(jiǎn)單的例子,下面介紹一下為什么:

通常JS引擎會(huì)在正式執(zhí)行之前先進(jìn)行一次預(yù)編譯,在這個(gè)過(guò)程中,首先將變量聲明及函數(shù)聲明提升至當(dāng)前作用域的頂端,然后進(jìn)行接下來(lái)的處理

下面來(lái)說(shuō)說(shuō)函數(shù)提升,同樣的,讓我們先看個(gè)例子:

function hoistFunction() {
    foo(); // output: I am hoisted

    function foo() {
        console.log("I am hoisted");
    }
}

hoistFunction();

函數(shù)可以在聲明之前就可以調(diào)用,這是因?yàn)橐媸前押瘮?shù)聲明整個(gè)地提升到了當(dāng)前作用域的頂部,預(yù)編譯之后的大概代碼如下:

function hoistFunction() {
    function foo() {
        console.log("I am hoisted");
    }

    foo(); // output: I am hoisted
}

hoistFunction();
總結(jié)

變量提升和函數(shù)提升可以遠(yuǎn)比上面那個(gè)例子復(fù)雜,但對(duì)我們意義并不大,畢竟對(duì)于變量已經(jīng)有了完善的let定義方法,而函數(shù)提升,在能不用的情況最好不用,畢竟他是不規(guī)范的,學(xué)習(xí)這個(gè),只是為了以后看到相關(guān)代碼時(shí)能夠看懂,否則,看這種代碼時(shí)肯定一臉懵逼。
(另外說(shuō)一句,函數(shù)提升是專(zhuān)門(mén)設(shè)計(jì)的,有其特殊用途,而變量提升純粹是設(shè)計(jì)語(yǔ)言時(shí)的失誤,但兩者都應(yīng)該少用,畢竟都不規(guī)范,想要詳細(xì)了解,可以點(diǎn)這里)

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

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

相關(guān)文章

  • JS中的變量提升函數(shù)提升

    摘要:什么是函數(shù)作用域下的變量提升和函數(shù)提升函數(shù)作用域中也存在變量提升和函數(shù)提升,這個(gè)和全局作用域下的情況是一模一樣的,就是把作用域想成是全局的就可以了。 在js中有一部分比較難以理解,卻也是在筆試過(guò)程中很容易考的,那就是變量提升和函數(shù)提升的問(wèn)題,這篇文章我會(huì)就變量提升和函數(shù)提升的問(wèn)題拓展一下有關(guān)js函數(shù)的知識(shí)點(diǎn),包括作用域的問(wèn)題,后面還會(huì)有一些小練習(xí)來(lái)判斷自己是否真的搞懂了。 作用域 在j...

    zhunjiee 評(píng)論0 收藏0
  • js 變量提升閉包理解

    摘要:變量的作用域無(wú)非就是兩種全局變量和局部變量。其中內(nèi)部函數(shù)中可以訪問(wèn)外部函數(shù)的變量,是因?yàn)閮?nèi)部函數(shù)的作用域鏈中包含了外部函數(shù)的作用域也可以理解為內(nèi)部函數(shù)的作用范圍輻射到了外部函數(shù)的作用范圍另一方面,在函數(shù)外部自然無(wú)法讀取函數(shù)內(nèi)的局部變量。 以前學(xué)習(xí)的時(shí)候,了解過(guò)變量提升和閉包,但是沒(méi)有深入了解,網(wǎng)上查了資料,這里記錄下,只供參考。部分內(nèi)容引用: https://www.cnblogs.c...

    luoyibu 評(píng)論0 收藏0
  • 原型模式故事鏈(4)--JS執(zhí)行上下文、變量提升、函數(shù)聲明

    摘要:代碼在執(zhí)行之前會(huì)先全局中變量提升函數(shù)聲明。函數(shù)的執(zhí)行上下文,也就是在這個(gè)函數(shù)范圍內(nèi)找到函數(shù)執(zhí)行上下文中函數(shù)范圍內(nèi),所有用聲明的變量。函數(shù)執(zhí)行時(shí),按照?qǐng)?zhí)行位置查找變量作用域只會(huì)向上查找。下一回變量作用域與閉包 上一章:JS的數(shù)據(jù)類(lèi)型 傳送門(mén):https://segmentfault.com/a/11... 好!話不多少,我們就開(kāi)始吧。對(duì)變量提升和函數(shù)聲明的理解,能讓你更清楚容易的理解,...

    melody_lql 評(píng)論0 收藏0
  • 原型模式故事鏈(4)--JS執(zhí)行上下文、變量提升、函數(shù)聲明

    摘要:代碼在執(zhí)行之前會(huì)先全局中變量提升函數(shù)聲明。函數(shù)的執(zhí)行上下文,也就是在這個(gè)函數(shù)范圍內(nèi)找到函數(shù)執(zhí)行上下文中函數(shù)范圍內(nèi),所有用聲明的變量。函數(shù)執(zhí)行時(shí),按照?qǐng)?zhí)行位置查找變量作用域只會(huì)向上查找。下一回變量作用域與閉包 上一章:JS的數(shù)據(jù)類(lèi)型 傳送門(mén):https://segmentfault.com/a/11... 好!話不多少,我們就開(kāi)始吧。對(duì)變量提升和函數(shù)聲明的理解,能讓你更清楚容易的理解,...

    zhigoo 評(píng)論0 收藏0
  • 原型模式故事鏈(4)--JS執(zhí)行上下文、變量提升、函數(shù)聲明

    摘要:代碼在執(zhí)行之前會(huì)先全局中變量提升函數(shù)聲明。函數(shù)的執(zhí)行上下文,也就是在這個(gè)函數(shù)范圍內(nèi)找到函數(shù)執(zhí)行上下文中函數(shù)范圍內(nèi),所有用聲明的變量。函數(shù)執(zhí)行時(shí),按照?qǐng)?zhí)行位置查找變量作用域只會(huì)向上查找。下一回變量作用域與閉包 上一章:JS的數(shù)據(jù)類(lèi)型 傳送門(mén):https://segmentfault.com/a/11... 好!話不多少,我們就開(kāi)始吧。對(duì)變量提升和函數(shù)聲明的理解,能讓你更清楚容易的理解,...

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

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

0條評(píng)論

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