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 將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷...