javascript
JS中RHS引用和LHS引用的区别
平時做前端開發的時候可能接觸不到LHS和RHS這兩個名詞,但是它卻是js中最基礎的概念,表示兩種變量的查找方式,在js代碼中無處不在。我們來舉個例子說明一下LHS和RHS。
var a = 1;??我們把這個表達式根據等號拆成兩個部分,var a 和 = 1。這個里面var a進行的LHS查找,編譯器遇到var a時,會詢問作用域是否存在一個名為a的變量,如果有則忽略,如果沒有則讓作用域聲明一個名為a的變量(就是聲明一個容器,過一會用來存儲數字1),等式右邊進行的是RHS查找,也就是查找數字1本身的值(可以理解為數字1的物理地址),然后再將1賦給a。
我們再來看一個例子,console.log(a);這里的a進行的是LHS查找還是RHS查找呢?進行的是RHS查找,因為a沒有賦予任何值,這里只需要找到a本來的值,并傳遞給log函數。而上面的a則是LHS查找,需要為 = 1找到一個賦值目標。
我們再來看一個復雜一點的例子:
function test(a) {console.log(a); } test(2);這個例子里哪些是LHS引用哪些是RHS引用?
最后一行test是一個RHS引用,表示查找到test的值并把它給我,而(..)表示test需要被執行,所以這里test必須是一個Function,否則會報test is not a function的錯誤,然后我們再看函數中的console.log(a);這里a進行的是RHS查找,表示找到a的值并傳遞給log(..),其實這里的console也是進行的RHS查找,表示查找到console這個對象并檢查對象中是否有一個log方法。
這里有一個容易被忽略的地方,就是傳參時隱式的 a = 2,這里的a進行的是LHS查找,表示在作用域中查找一個名為a的變量,并且將2賦給它。
總結
以上是生活随笔為你收集整理的JS中RHS引用和LHS引用的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目管理全流程,让你的工作和生活事半功倍
- 下一篇: JavaScript中逻辑运算符(、||