最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript的變量聲明提升問題淺析(Hoisting)

 更新時間:2016年11月30日 10:04:04   投稿:daisy  
大家應(yīng)該都只奧javascript的變量聲明具有hoisting機(jī)制,JavaScript引擎在執(zhí)行的時候,會把所有變量的聲明都提升到當(dāng)前作用域的最前面。網(wǎng)上關(guān)于JavaScript的變量聲明提升問題的文章有很多,這篇文章將再次談?wù)勱P(guān)于這方面的問題,有需要的朋友們可以參考借鑒。

一、變量聲明提升

      hoisting 英[‘hɔɪstɪŋ] 美[‘hɔɪstɪŋ]

      n. 起重,提升

      v. 把…吊起,升起( hoist的現(xiàn)在分詞 )

先來看一個栗子

var cc = 'hello';
function foo(){
 console.log(cc);
 var cc = 'world';
 console.log(cc);
}
foo();
console.log(cc);

這里將會輸出 undefined、'world' 'hello'

此處主要有兩個知識點(diǎn):

      1、作用域

      2、變量聲明提升

JavaScript是一門解釋性語言,當(dāng)代碼在解釋器(如Chrome的V8引擎)環(huán)境中執(zhí)行時,會有一個預(yù)解析的過程,此時會將變量聲明和函數(shù)聲明提升至當(dāng)前作用域的最前方,這個行為被稱為聲明提升(Hoisting)

再來看上面的例子,此代碼有兩層作用域,全局作用域和函數(shù)foo作用域,而foo中的變量聲明在預(yù)解析的過程中會被提升至函數(shù)作用域的前方,于是代碼就會變成這樣:

var cc = 'hello';
function foo(){
 var cc;
 console.log(cc);
 cc = 'world';
 console.log(cc);
}
foo();
console.log(cc);

當(dāng)執(zhí)行到第一個log時,變量cc只是進(jìn)行了聲明,并未賦值,所以打印出的是undefined

二、 函數(shù)聲明提升

函數(shù)的聲明有兩種方式:函數(shù)聲明和函數(shù)表達(dá)式

// 函數(shù)聲明
function foo(a, b) {
 return a + b;
}
// 函數(shù)表達(dá)式
var foo = function(a, b) {
 return a + b;
}

解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時,對函數(shù)聲明和函數(shù)表達(dá)式并非一視同仁。解析器會率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問);至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會真正被解釋執(zhí)行。

當(dāng)然,也可以函數(shù)聲明和函數(shù)表達(dá)式同時使用,如var a = function b(){} ,其結(jié)果是只具有函數(shù)表達(dá)式的作用,b會被自動忽略,所以只會發(fā)生變量提升效果。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • 一步步教你使用JavaScript打造一個掃雷游戲

    一步步教你使用JavaScript打造一個掃雷游戲

    javascript作為前端常用的開發(fā)語言,越來越多的人都在學(xué)習(xí)它,下面這篇文章主要給大家介紹了關(guān)于如何使用JavaScript打造一個掃雷游戲的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 簡單談?wù)凧avaScript寄生式組合繼承

    簡單談?wù)凧avaScript寄生式組合繼承

    寄生組合式繼承,是集寄生式繼承和組合繼承的有點(diǎn)與一身,主要是通過借用構(gòu)造函數(shù)來繼承屬性,通過原型鏈的混成形式來繼承方法,這篇文章主要給大家介紹了關(guān)于JavaScript寄生式組合繼承的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 微信小程序?qū)崿F(xiàn)分類菜單激活狀態(tài)隨列表滾動而自動切換效果詳解

    微信小程序?qū)崿F(xiàn)分類菜單激活狀態(tài)隨列表滾動而自動切換效果詳解

    這篇文章主要介紹了微信小程序分類菜單激活狀態(tài)跟隨列表滾動自動切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • layUI實(shí)現(xiàn)前端分頁和后端分頁

    layUI實(shí)現(xiàn)前端分頁和后端分頁

    這篇文章主要為大家詳細(xì)介紹了layUI實(shí)現(xiàn)前端分頁和后端分頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • JS 獲取文件后綴,判斷文件類型(比如是否為圖片格式)

    JS 獲取文件后綴,判斷文件類型(比如是否為圖片格式)

    這篇文章主要介紹了JS 獲取文件后綴,判斷文件類型(比如是否為圖片格式),需要的朋友可以參考下
    2020-05-05
  • JavaScript獲得選中文本內(nèi)容的方法

    JavaScript獲得選中文本內(nèi)容的方法

    今天希望實(shí)現(xiàn)一個,直接在網(wǎng)頁上選中文本,點(diǎn)擊收藏夾的鏈接(javascript)即可彈出新窗口(類似“百度搜藏”和“QQ書簽”),新窗口中的文本框即顯示了選中的文本。
    2008-12-12
  • JavaScript中數(shù)組flat方法的使用與實(shí)現(xiàn)方法

    JavaScript中數(shù)組flat方法的使用與實(shí)現(xiàn)方法

    在Array的顯示原型下有一個flat方法,可以將多維數(shù)組,降維,傳的參數(shù)是多少就降多少維,下面這篇文章主要給大家介紹了關(guān)于JavaScript中數(shù)組flat方法的使用與實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • newxtree.js代碼

    newxtree.js代碼

    newxtree.js代碼...
    2007-03-03
  • png在IE6 下無法透明的解決方法匯總

    png在IE6 下無法透明的解決方法匯總

    解決PNG圖片在IE6下的透明這類問題谷歌上很多解決方案,屬于非常常見的問題,以前我做的時候,這類透明我都是用gif,而直接避開png,所以到現(xiàn)在我并沒有去了解過這個問題。今天就把這個問題整理下,解決方案匯總給大家。
    2015-05-05
  • JS操作字符串轉(zhuǎn)數(shù)字的常見方法示例

    JS操作字符串轉(zhuǎn)數(shù)字的常見方法示例

    這篇文章主要介紹了JS操作字符串轉(zhuǎn)數(shù)字的常見方法,結(jié)合實(shí)例形式分析了javascript字符串類型轉(zhuǎn)換的常用方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評論

苍南县| 北安市| 临澧县| 民和| 射阳县| 海林市| 通州市| 连云港市| 罗定市| 南漳县| 安远县| 民和| 横山县| 济源市| 广宗县| 枣阳市| 庆城县| 普兰县| 苗栗市| 宝鸡市| 阳高县| 霸州市| 青阳县| 蕲春县| 兴文县| 浪卡子县| 静海县| 永泰县| 获嘉县| 临高县| 灵武市| 博湖县| 福州市| 山丹县| 武乡县| 广南县| 浦县| 台州市| 鹿泉市| 怀宁县| 介休市|