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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript的變量聲明和變量提升

luffyZh / 841人閱讀

摘要:瀏覽器在執(zhí)行代碼時(shí),會(huì)在運(yùn)行前對(duì)帶有和關(guān)鍵字的代碼進(jìn)行提前,這一過(guò)程被稱(chēng)為變量提升。預(yù)解析值會(huì)發(fā)生在通過(guò)定義的變量和上。

最近在鞏固前端基礎(chǔ),看到預(yù)解析和代碼執(zhí)行部分,里面講到提到了聲明提升,因?yàn)榕c我們的日常很密切,根據(jù)個(gè)人所得,寫(xiě)一篇文章。

1. 先解釋一下什么叫預(yù)解析?

顧名思義,提前解析。瀏覽器在執(zhí)行代碼時(shí),會(huì)在js運(yùn)行前對(duì)帶有var和function關(guān)鍵字的代碼進(jìn)行提前,這一過(guò)程被稱(chēng)為變量提升。預(yù)解析值會(huì)發(fā)生在通過(guò)var定義的變量和function上。

2. var關(guān)鍵字

通過(guò)var關(guān)鍵字定義的變量在進(jìn)行預(yù)解析過(guò)程的時(shí)候,都是先聲明,然后賦值undefined。不管是否已經(jīng)賦值,

    // 1.
    alert(a);   // undefined
    var a = 1;
    
    // 2.
    alert(b);   //
    var b = function(){}
    
    // 3.
    alert(c);
    var c;

只要是var定義的,不管是變量還是函數(shù),都是先賦值undefined。如果是變量,也不管是否賦值,在預(yù)解析階段都會(huì)被賦值為undefined。

3. 關(guān)鍵字function

在進(jìn)行預(yù)解析的時(shí)候,function此時(shí)已經(jīng)被聲明并且被定義了,但是他存儲(chǔ)數(shù)據(jù)的那個(gè)空間里面存儲(chǔ)的是代碼字符串,沒(méi)有任何意義。

    alert(a);  // 彈出的是下面的function
    function a(){}
    
    // 注意:函數(shù)在預(yù)解析的時(shí)候會(huì)將代碼分成兩部分來(lái)執(zhí)行,第一部分是fn函數(shù);第二部分是(),一個(gè)匿名函數(shù),這時(shí)在執(zhí)行過(guò)程中會(huì)報(bào)錯(cuò)。如果小括號(hào)帶參數(shù),如(2),雖然不會(huì)報(bào)錯(cuò),也打印出2,但是并不能把fn執(zhí)行,不能當(dāng)做參數(shù)傳遞給fn函數(shù)。

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

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

相關(guān)文章

  • JavaScript 變量聲明提升

    摘要:輸出的結(jié)果為輸出的結(jié)果為提升后輸出的結(jié)果為重新定義了變量輸出的結(jié)果為如果定義了相同的函數(shù)變量聲明,后定義的聲明會(huì)覆蓋掉先前的聲明,看如下代碼輸出練習(xí)的值是多少的值是多少第二題的解析請(qǐng)看這里參考資料文章文章中文版鏈接文章推薦文章變量提升 JavaScript 變量聲明提升 原文鏈接 一個(gè)小例子 先來(lái)看個(gè)例子: console.log(a); // undefined var a =...

    fireflow 評(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): 一、引擎查詢(xún)變量的兩種方式 引擎查詢(xún)變量的方式可以分為L(zhǎng)HS和RHS兩...

    evin2016 評(píng)論0 收藏0
  • ES6 變量作用域與提升變量生命周期詳解

    摘要:不同的是函數(shù)體并不會(huì)再被提升至函數(shù)作用域頭部,而僅會(huì)被提升到塊級(jí)作用域頭部避免全局變量在計(jì)算機(jī)編程中,全局變量指的是在所有作用域中都能訪問(wèn)的變量。 ES6 變量作用域與提升:變量的生命周期詳解從屬于筆者的現(xiàn)代 JavaScript 開(kāi)發(fā):語(yǔ)法基礎(chǔ)與實(shí)踐技巧系列文章。本文詳細(xì)討論了 JavaScript 中作用域、執(zhí)行上下文、不同作用域下變量提升與函數(shù)提升的表現(xiàn)、頂層對(duì)象以及如何避免創(chuàng)建...

    lmxdawn 評(píng)論0 收藏0
  • 【6】JavaScript 函數(shù)高級(jí)——執(zhí)行上下文與執(zhí)行上下文棧、變量提升(圖解+典型實(shí)例分析)

    摘要:函數(shù)和變量相比,會(huì)被優(yōu)先提升。這意味著函數(shù)會(huì)被提升到更靠前的位置。僅提升聲明,而不提升初始化。 JavaScript 函數(shù)高級(jí)——執(zhí)行上下文與執(zhí)行上下文棧(圖解+典型實(shí)例分析) 變量提升與函數(shù)提升 變量聲明提升 通過(guò) var 定義(聲明)的變量,在定義語(yǔ)句之前就可以訪問(wèn)到 值:undefined /* 面試題 : 輸出 undefined */ var a = 3 ...

    niuxiaowei111 評(píng)論0 收藏0
  • JavaScript變量提升

    摘要:變量提升需要注意兩點(diǎn)提升的部分只是變量聲明,賦值語(yǔ)句和可執(zhí)行的代碼邏輯還保持在原地不動(dòng)提升只是將變量聲明提升到變量所在的變量范圍的頂端,并不是提升到全局范圍,說(shuō)明如下會(huì)輸出變量提升之后的效果函數(shù)聲明會(huì)提升,但是函數(shù)表達(dá)式就不了。 問(wèn)題 有些朋友可能會(huì)覺(jué)得javascript的代碼是從上到下,一行一行的解釋執(zhí)行的。如果按照這樣的思路,在有些情況下閱讀代碼會(huì)得到錯(cuò)誤的結(jié)果,考慮以下代碼: ...

    Zoom 評(píng)論0 收藏0
  • JavaScript 變量提升

    摘要:生命周期假設(shè)這樣一個(gè)場(chǎng)景當(dāng)解釋器剛進(jìn)入一個(gè)包含的作用域時(shí),則在任何語(yǔ)句執(zhí)行之前,變量就已完成了聲明階段和初始化階段,且值為。當(dāng)解釋器執(zhí)行完,變量就已完成了初始化階段,離開(kāi)了臨時(shí)死區(qū),并具有的值。 變量提升是一個(gè)將變量聲明或者函數(shù)聲明提升到作用域起始處的過(guò)程。在本篇博文中,我們一起深入了解這個(gè)過(guò)程的更多細(xì)節(jié)。 變量的生命周期 當(dāng)引擎使用變量時(shí),它們的生命周期包含以下階段: 聲明階段,...

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

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

0條評(píng)論

閱讀需要支付1元查看
<