作用域中LHS查詢和RHS查詢

2022-06-22 09:09:14 字數 728 閱讀 5779

lhs查詢:賦值操作左側的查詢,lhs查詢試圖找到變數的容器本身,,從而對其賦值。

rhs查詢:賦值操作右側的查詢,可以理解為「取到某某的值」

舉例:

function foo(a) 

foo(2);

rhs查詢有:

foo(..), 查詢foo函式

函式內console物件的查詢

對a進行rhs查詢

lhs查詢:

把2賦值給引數a時,對a進行lhs查詢;

如果rhs查詢在所有巢狀的作用域中找不到所需的變數,引擎就會丟擲referenceerror異常;

相比之下,非嚴格模式下,當執行lhs查詢時,如果在頂層作用域也無法找到目標變數,全域性作用域會建立乙個具有該名稱的變數,並將其返回給引擎;嚴格模式下,lhs查詢,找不到目標變數時也會丟擲referenceerror異常。

如果rhs查詢找到了乙個變數,但是對這個變數的值進行不合理的操作(如試著引用null型別的屬性),引擎會丟擲typeerror異常。

作用域是一套規則,用來管理引擎如何在當前作用

域以及巢狀的子作用域中根據識別符號名稱進行變數查詢。如果查詢的目的是對

變數進行賦值,那麼就會使用 lhs 查詢;如果目的是獲取變數的值,就會使用 rhs 查詢。

LHS和RHS查詢筆記

引擎在執行編譯器在編譯過程生成的 時,通過查詢賦值操作的左側和右側的變數,判斷是否宣告過。lhs 是變數在賦值操作的左側,例如 var a 2rhs 是變數在賦值操作右側,例如 console.log a 或foo 2 foo 2 是指找到 foo 的函式。rhs 在作用域中找不到變數,引擎會丟擲r...

靜態查詢(順序查詢和折半查詢)

聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構 c語言版 書中的演算法實現一遍。現在開始第一彈。貴在堅持。順序查詢 演算法描述 include include 順序表的查詢 define eq a,b a b de...

子查詢 聯合查詢和連線查詢

查詢中巢狀查詢。如 select from select cname,cid from tblclass union select dname,did from department as t1 order by cname 將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷...