JavaScript 左值與右值

admin發表於2018-11-06

程式設計中,很多概念雖然編寫者已經在使用,但自己並沒有意識到。

生活中也有很多類似的例子,比如著名的蘋果落地現象。

很少人去思考原因,因為大家會覺得這是理所當然的事情。

學過相關物理知識之後,才知道是萬有引力原因導致。

下面進入本文的主題,首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
num=5;

上面程式碼實在是太簡單了,為變數num賦值為5。

這其中就涉及到左值(L-value)與右值(R-value)概念的應用,即便不知道不影響程式碼的使用。

但是多一點的知識儲備,會讓人更加通透一點。

一.左值與右值概念理解:

左值與右值是以等號隔開,從外觀可以理解如下:

(1).在等號左邊為左值。

(2).在等號右邊為右值。

但是上述理解過於膚淺,下面做一下深入介紹。房子具有兩個重要屬性:

(1).房子地址。

(2).房子中住的人。

計算機記憶體與房子類似,它也具有兩個類似屬性:

(1).記憶體地址。

(2).記憶體中的資料。

那麼左值側重於地址,而右值側重於值。

於是L-value中的L理解為location,R-value中的R理解為read更為合適。

二.程式碼例項分析:

[JavaScript] 純文字檢視 複製程式碼
num=5;

將數字5儲存到num所指向的記憶體中。

[JavaScript] 純文字檢視 複製程式碼
b=a;

左值側重地址,右值側重資料。

那麼就是將a地址中的資料儲存到b地址記憶體中。

[JavaScript] 純文字檢視 複製程式碼
5=b;

上述程式碼會報錯,這是因為5是一個數字直接量,無法從中獲取地址。

所以無法將b地址記憶體中的資料賦值給一個無地址的東西。

最後總結:

(1).左值是接收資料的地方,所以側重於地址。

(2).右值是讀取資料賦值給另一個地址記憶體,所以它側重資料。

雖然對於左值或者右值理解與否大多數情況下不會對程式設計產生影響,但是對於它的掌握,能夠讓我們透過現象看透本質,加深對程式碼的理解,也許它是其他概念中的一環,所以多掌握一個知識點,可能就相當於多了一條到達目的地的路。

相關文章