日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

原理_JS引擎对未声明变量的处理

發布時間:2024/2/28 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原理_JS引擎对未声明变量的处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容為讀《你不知道的JS》的讀書筆記,在該書 1.2.3 節中講到兩個變量查詢的方法,即 LHS 查詢和 RHS 查詢。書中的原話是“當變量出現在賦值操作的左側時進行 LHS 查詢,出現在右側時進行 RHS 查詢”。我的理解是,除了在賦值號(等號)左邊的變量進行 LHS 查詢外,所有需要訪問變量的過程都是 RHS 查詢。需要注意的是,在函數調用中,所傳實參是一個隱式變量分配,屬于 LHS 查詢。

如下例,紅色方框中的變量使用的是 LHS 查詢,藍色方框中的變量使用的是 RHS 查詢

?在清楚 LHS 查詢和 RHS 查詢后,我們來看看當變量未經聲明時,JS引擎的處理,如下例

function foo(a) {console.log(a + b);b = a } foo(2);

【結果】在第一次對 b 進行 RHS 查詢時,無法找到該變量,因此報錯信息如下

?雖然代碼執行到這里報錯,后面的內容不繼續執行,但是要說明的是,當JS引擎在執行 LHS 查詢時,如果在全局作用域中也找不到目標變量,就會在全局作用域中創建一個具有該名稱的變量,并將其返還給引擎,前提是程序運行在非嚴格模式下。

將上述代碼修改如下

function foo(a) {b = a;console.log('a + b = ', a + b); } foo(2); console.log('b = ', b);

【結果】可以在全局作用域訪問到 b

下面是我自己的一個點,沒有什么技術含量

function foo(a) {console.log('a + b = ', a + b); //b = undefinedvar b = a; } foo(2);

【結果】數 + undefined = NaN

總結

以上是生活随笔為你收集整理的原理_JS引擎对未声明变量的处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。