javascript賦值運算子等號=深入介紹
賦值運算子是最為常見也最為簡單的運算子之一。
看如下程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var a = 3;
上面是一個最為簡單的賦值語句。
下面再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var a = { n: 1 }; a.x = a = { n: 2 }; console.log(a.x);
上面的程式碼輸出結果是undefined,下面就進行一下詳細分析。
建議事先參閱javascript引用型別和基本型別詳解一章節。
先說明一點,那就是賦值運算是從右向左進行的。
(1).var a = { n: 1 },首先宣告一個變數a,併為其賦值物件{ n: 1 }的地址。
(2).a.x = a = { n: 2 },這是程式碼的關鍵部分,由兩個賦值運算子構成,賦值運算子的兩側是表示式,在賦值之前首先要執行這三個表示式,我們可以將程式碼修改成如下形式可能更加清晰一些:
[JavaScript] 純文字檢視 複製程式碼(a.x) = (a) = ({ n: 2 });
先來看三個表示式的執行:
(a.x)為物件{n:1}新增一個x屬性,但是並沒有為屬性賦值,得到如下物件:
[JavaScript] 純文字檢視 複製程式碼{ n: 1, x:undefined }
(a)僅僅是返回物件。
({ n: 2 })同樣僅僅返回物件。
下面進行賦值操作,從右到左進行:
a = { n: 2 },這個時候變數a儲存的是物件{ n: 2 }的地址。
a.x = a,因為在進行賦值操作之前,表示式進行了運算,結果如下:
[JavaScript] 純文字檢視 複製程式碼{ n: 1, x:undefined }
當進行了a = { n: 2 }賦值操作之後,上面計算所得的物件已經不再被變數a所引用,a.x = a如此賦值就是將變數a所引用的物件賦值給物件{n: 1,x:undefined}的x屬性。
(3).console.log(a.x),那麼這個輸出值也就是undefined。
相關文章
- JavaScript 等號 = 賦值運算子JavaScript賦值
- javascript等號==運算子用法介紹JavaScript
- javascript運算子——條件、逗號、賦值、()和void運算子JavaScript賦值
- JavaScript == 等號運算子JavaScript
- ECMAScript 安全賦值運算子 (?=) 提案介紹及其 Polyfill賦值
- 運算子-賦值運算子賦值
- JavaScript 三個等號 === 全等運算子JavaScript
- javascript的逗號運算子的用法簡單介紹JavaScript
- 賦值運算子(轉)賦值
- javascript &&和||運算子簡單介紹JavaScript
- javascript的in運算子簡單介紹JavaScript
- If-Let 賦值運算子賦值
- 賦值運算子和+號的用法(兩個練習)賦值
- 1:賦值運算子函式賦值函式
- 按位“或”賦值運算子 (|=)賦值
- JavaScript 連等賦值JavaScript賦值
- JavaScript (+) 正號運算子JavaScript
- JavaScript + 正號運算子JavaScript
- JavaScript - 負號運算子JavaScript
- javascript一元運算子簡單介紹JavaScript
- javascript基礎(賦值運算子,關係運算子,相等運算子,三元運算子,運算子的優先順序,程式碼塊)(十)JavaScript賦值
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- js 加號+運算子字串連線簡單介紹JS字串
- JavaScript instanceof 運算子深入剖析JavaScript
- JavaScript >> 有符號右移運算子JavaScript符號
- JavaScript 小括號()分組運算子JavaScript
- 配置 babel 支援物件擴充套件運算子、class 直接賦值變數等新特性Babel物件套件賦值變數
- js與&&運算子簡單介紹JS
- Python 賦值與運算子和連線符Python賦值
- javascript運算子——邏輯運算子JavaScript
- Kotlin 運算子詳解:算術、賦值、比較與邏輯運算子全解析Kotlin賦值
- Python中“+=”指什麼?賦值運算子包括哪些?Python賦值
- PHP開發之運算子使用介紹PHP
- Java 語法介紹(二):運算子(轉)Java
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- JavaScript >>> 三個大於號無符號右移運算子JavaScript符號
- javascript中加號(+)用法介紹JavaScript