<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:31:51
        文檔

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

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

        JavaScript 程序中的一段源代碼在執行之前會經歷三個步驟,統稱為 編譯

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

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

        LHS 和 RHS

      5. 字面意思其實是 Left Hand Side Right Hand Side 即左手邊和右手邊
      6. 一般可以理解為 賦值操作的左側和右側
      7. 先看個例子一

        console.log(a);

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

        a = 2;

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

        再看例子二

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

        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

        小結

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

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

        文檔

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

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 午夜爱爱免费视频| 五月婷婷综合免费| 免费人成网站在线高清| 亚洲色成人WWW永久在线观看| 国产成人免费高清激情明星| 久久亚洲精品中文字幕| 18勿入网站免费永久| 性xxxx黑人与亚洲| 免费看片A级毛片免费看| 国产精品亚洲综合天堂夜夜| www.亚洲一区| 国产午夜无码片免费| 亚洲日本一区二区三区| 五月婷婷综合免费| 色偷偷亚洲男人天堂| 黑人大战亚洲人精品一区| 女人体1963午夜免费视频| 久久久久亚洲AV无码网站| 成人男女网18免费视频| 日本亚洲中午字幕乱码 | 在线观看成人免费视频| 亚洲av无码一区二区三区天堂| 亚洲精品无码日韩国产不卡?V| 久久久久久免费一区二区三区| 亚洲精品在线网站| 国产成人无码a区在线观看视频免费 | 羞羞漫画小舞被黄漫免费| 亚洲区小说区图片区QVOD| 国产福利视精品永久免费| 黄网站在线播放视频免费观看| 国产亚洲精久久久久久无码| 成人午夜免费福利视频| 全部在线播放免费毛片| 亚洲高清无在码在线电影不卡| 午夜免费不卡毛片完整版| 国产午夜不卡AV免费| 亚洲人成欧美中文字幕| 国产亚洲一区二区三区在线观看| 曰曰鲁夜夜免费播放视频| 男女一进一出抽搐免费视频 | 国产亚洲福利一区二区免费看|