當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
原理_JS引擎对未声明变量的处理
生活随笔
收集整理的這篇文章主要介紹了
原理_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引擎对未声明变量的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 避坑!gulp-imagemin运行出问
- 下一篇: Vue的响应式及相关问题