js中RHS與LHS區別


為什么區分RHS與LHS是一件重要的事情?

因為在變量沒有聲明(在任何作用域都找不到該變量的情況下),這兩種查詢的行為是不一樣的.

function foo (a) {

  console.log(a + b);

  return a + b;

}

foo(2);

第一次對b進行RHS查詢是找不到該變量的.也就是說這是一個"未聲明"的變量.

如果在rhs的所有嵌套的作用域查詢中都無法找到該變量,js引擎就會拋出一個ReferenceError異常. ReferenceError是一個重要的異常.

相較之下, 當引擎執行 LHS 查詢時, 如果在頂層( 全局作用域) 中也無法找到目標變量,

全局作用域中就會創建一個具有該名稱的變量, 並將其返還給引擎, 前提是程序運行在非 “ 嚴格模式” 下。

“ 不, 這個變量之前並不存在, 但是我很熱心地幫你創建了一個。”

來自 你不知道的js


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM