国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:31:51
文檔

快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法

快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法:JavaScript 程序中的一段源代碼在執(zhí)行之前會經(jīng)歷三個步驟,統(tǒng)稱為 編譯 分詞/詞法分析 解析/語法分析 代碼生成 先看原書對一個賦值操作的拆解說明: 變量的賦值操作會執(zhí)行兩個動作,首先編譯器會在當(dāng)前作用域中聲明一個變量(如果之前沒有聲明過),然后在
推薦度:
導(dǎo)讀快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法:JavaScript 程序中的一段源代碼在執(zhí)行之前會經(jīng)歷三個步驟,統(tǒng)稱為 編譯 分詞/詞法分析 解析/語法分析 代碼生成 先看原書對一個賦值操作的拆解說明: 變量的賦值操作會執(zhí)行兩個動作,首先編譯器會在當(dāng)前作用域中聲明一個變量(如果之前沒有聲明過),然后在

JavaScript 程序中的一段源代碼在執(zhí)行之前會經(jīng)歷三個步驟,統(tǒng)稱為 編譯

  • 分詞/詞法分析
  • 解析/語法分析
  • 代碼生成
  • 先看原書對一個賦值操作的拆解說明:
    變量的賦值操作會執(zhí)行兩個動作,首先編譯器會在當(dāng)前作用域中聲明一個變量(如果之前沒有聲明過),然后在運行時引擎會在作用域中查找該變量,如果能夠找到就會對它賦值。 --- 《你不知道的JavaScript(上卷)》 P7

    而要講的 LHS 和 RHS 就是上面說的對變量的兩種查找操作,查找的過程是由作用域(詞法作用域)進行協(xié)助,在編譯的第二步中執(zhí)行。

    LHS 和 RHS

  • 字面意思其實是 Left Hand Side Right Hand Side 即左手邊和右手邊
  • 一般可以理解為 賦值操作的左側(cè)和右側(cè)
  • 先看個例子一

    console.log(a);

    這里對 a 是一個 RHS 引用,因為 a 并沒有賦予任何值,目的是為了取到 a 的值并打印出來。

    a = 2;

    這里對 a 是一個 LHS 引用,因為實際上我們不關(guān)心當(dāng)前的值是什么,只是想要把 a 賦值為 2。

    再看例子二

    function foo(a) {
     console.log(a); // 2
    }
    foo(2);
  • 最后一行foo(..)函數(shù)的調(diào)用需要對 foo 進行 RHS 引用,意味著是取到 foo 的值,并且 (..)意味著 foo 需要被執(zhí)行,因此它最好是一個函數(shù)類型的值
  • 其中有一個容易被忽略的隱式賦值操作 a = 2,它發(fā)生在 2 被當(dāng)做實參傳入 foo 中時。即實參 2 傳給了形參 a,需要一個 LHS 查詢
  • console 那一行還有對 a 的一次 RHS 引用(或者叫查詢),同時console.log(..)本身也需要一個 RHS 引用,即對 console 對象進行 RHS 查詢,并且檢查得到的值中是否有一個叫做 log 的方法。
  • 書中有一段引擎和作用域的對話,有助于很好的理解例子二,see YDKJS github
  • 小測驗

    function foo(a) {
     var b = a;
     return a + b;
    }
    var c = foo(2);

    試試找出其中的3處 LHS 查詢,4處 RHS 查詢

    答案:

    LHS 查詢:

    c = ..;
    a = 2(隱式變量分配)
    b = ..

    RHS 查詢

    foo(2..
    = a;
    a ..
    .. b

    小結(jié)

    參考原書中文版P12,英文版見 github

  • 作用域是一套規(guī)則,用于確定在何處以及如何查找變量(標(biāo)識符)。
  • 如果查找的目的是對變量進行賦值,就會使用 LHS 查詢;如果目的是獲取變量的值,就會用 RHS 查詢。
  • 賦值操作會導(dǎo)致 LHS 查詢。 = 操作符或調(diào)用函數(shù)時傳入?yún)?shù)的操作都會導(dǎo)致關(guān)聯(lián)作用域的賦值操作, 即都會導(dǎo)致 LHS 查詢。
  • JavaScript 引擎首先會在代碼執(zhí)行前對其進行編譯,在這個過程中,像var a = 2 這樣的聲明會被分解成兩個獨立的步驟:
  • 首先,var a在其作用域中聲明新變量。這會在最開始的階段,也就是代碼執(zhí)行前進行。
  • 接下來,a = 2會查詢(LHS查詢)變量 a 并對其進行賦值。
  • LHS 和 RHS 查詢都會在當(dāng)前執(zhí)行作用域中開始,如果有需要(也就是說它們沒有找到所需的標(biāo)識符),就會向上級作用域繼續(xù)查找目標(biāo)標(biāo)識符,這樣每次上升一級作用域,最后到達全局作用域,無論找到或沒找到都將停止。
  • 不成功的 RHS 引用會導(dǎo)致拋出 ReferenceError 異常。不成功的 LHS 引用會導(dǎo)致自動隱式地創(chuàng)建一個全局變量(非嚴(yán)格模式下),該變量使用 LHS 引用的目標(biāo)作為標(biāo)識符,或者拋出 ReferenceError 異常(嚴(yán)格模式下)。
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法

    快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法:JavaScript 程序中的一段源代碼在執(zhí)行之前會經(jīng)歷三個步驟,統(tǒng)稱為 編譯 分詞/詞法分析 解析/語法分析 代碼生成 先看原書對一個賦值操作的拆解說明: 變量的賦值操作會執(zhí)行兩個動作,首先編譯器會在當(dāng)前作用域中聲明一個變量(如果之前沒有聲明過),然后在
    推薦度:
    標(biāo)簽: 查詢 中的 快速
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 天天躁夜夜躁狠狠躁躁88 | 久久91精品国产91 | 韩国理论三级在线观看视频 | 欧美aⅴ在线 | 亚洲日韩第一页 | 无遮挡色视频 | 精品久久久久久国产牛牛app | 九九精品视频一区在线 | a国产成人免费视频 | 国产日韩免费 | 欧美日韩不卡在线 | 亚洲欧美日韩在线观看二区 | 国产精品人成人免费国产 | 国产在线观看网站 | 日本a v 黄 | 国产精彩视频 | 国产全黄a一级毛片视频 | 在线免费国产视频 | 久久国产精品视频一区 | 亚欧成人一区二区 | 亚欧成人毛片一区二区三区四区 | 美女视频黄a视频免费全过程在线 | 精品久久久久久久一区二区手机版 | 亚洲免费久久 | 蜜桃视频一区二区三区四区 | 欧美xxx在线观看 | 久久精品无码一区二区日韩av | 欧美高清亚洲欧美一区h | 日韩免费网站 | 免费观看a毛片一区二区不卡 | 销魂美女一区二区 | 亚洲欧美专区 | 国产精品成人免费 | 亚洲一区二区三区久久精品 | 国产在线视频专区 | 国产视频高清在线观看 | 日韩黄 | 亚洲欧美自拍偷拍 | a级毛片免费高清视频 | 国产日产高清欧美一区二区三区 | 国产成人久久精品一区二区三区 |