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

資訊專欄INFORMATION COLUMN

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

ruicbAndroid / 2851人閱讀

摘要:而是一個更完善的,以前的是不完善的,他定義的變量是以函數(shù)為范圍,而不是正常編程語言中的以一個大括號為范圍,比如打印時仍然會打印若是一個沒接觸過的人肯定會大吃一驚,這就是一個最簡單的變量提升的例子。

從上周開始,我所在的學習小組正式開始了angular的學習,angular是全面支持es6的,所以語法上和以前的angular有了很大的不同,比如變量聲明時就拋棄了var,而選擇了let和const;記得剛開始學習js的時候,使用webstrom時用var,webstrom會在下面畫一條小綠線,表示這個用法,問題不大,但是有點問題。因為webstrom推薦使用最新的標準,之后問過學長,他說這是es6的語法,暫時不用管,防止瀏覽器不兼容。

終于,現(xiàn)在到了學習es6的時候。

const與let

const就是定義一個常量,即一個無法改變的量。

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

function() {

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

    console.log(a);  // a
}

打印a時仍然會打印"a",若是一個沒接觸過js的人肯定會大吃一驚,這就是一個最簡單的變量提升的例子。而let就解決了這個問題。它定義的變量就是塊級的。

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

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

通常JS引擎會在正式執(zhí)行之前先進行一次預編譯,在這個過程中,首先將變量聲明及函數(shù)聲明提升至當前作用域的頂端,然后進行接下來的處理

下面來說說函數(shù)提升,同樣的,讓我們先看個例子:

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

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

hoistFunction();

函數(shù)可以在聲明之前就可以調(diào)用,這是因為引擎是把函數(shù)聲明整個地提升到了當前作用域的頂部,預編譯之后的大概代碼如下:

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

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

hoistFunction();
總結(jié)

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108584.html

相關文章

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

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

    zhunjiee 評論0 收藏0
  • js 變量提升閉包理解

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

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

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

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

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

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

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

    netScorpion 評論0 收藏0

發(fā)表評論

0條評論

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