js中RHS與LHS區別

2022-02-06 03:42:55 字數 473 閱讀 6390

為什麼區分rhs與lhs是一件重要的事情?

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

function foo (a) {

console.log(a + b);

return a + b;

foo(2);

第一次對b進行rhs查詢是找不到該變數的.也就是說這是乙個"未宣告"的變數.

如果在rhs的所有巢狀的作用域查詢中都無法找到該變數,js引擎就會丟擲乙個referenceerror異常. referenceerror是乙個重要的異常.

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

全域性作用域中就會建立乙個具有該名稱的變數, 並將其返還給引擎, 前提是程式執行在非 「 嚴格模式」 下。

「 不, 這個變數之前並不存在, 但是我很熱心地幫你建立了乙個。」

來自 你不知道的js

js中 與 區別

運算子稱作相等,用來檢測兩個運算元是否相等,這裡的相等定義的非常寬鬆,可以允許進行型別轉換 用來檢測兩個運算元是否嚴格相等 1 對於string,number等基礎型別,和 是有區別的 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等,如果型別不同,其結果就是不等 同型別比較,直接進行...

js中 與 的區別

為了減少概念混淆,應該把 稱作 得到或者賦值 稱作 相等 稱作 嚴格相等 相同點 它們兩個運算子都允許任意型別的的運算元,如果運算元相等,返回true,否則返回false 不同 運算子稱作相等,用來檢測兩個運算元是否相等,這裡的相等定義的非常寬鬆,可以允許進行型別轉換 用來檢測兩個運算元是否嚴格相等...

js中 與 的區別

為了減少概念混淆,應該把 稱作 得到或者賦值 稱作 相等 稱作 嚴格相等 相同點 它們兩個運算子都允許任意型別的的運算元,如果運算元相等,返回true,否則返回false 不同 1 如果兩個值型別相同,再進行三個等號 的比較 2 如果兩個值型別不同,也有可能相等,需根據以下規則進行型別轉換在比較 1...