国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js中變量的連續賦值(實例講解)

2024-05-06 16:38:20
字體:
來源:轉載
供稿:網友

今天遇到了一個連續賦值的經典案例,網友們給出的答案也是五花八門,看起來有些繁瑣,我也來說說自己的看法。

下面就是這個經典案例:

var a = {n: 1};var b = a;a.x = a = {n: 2};console.log(a);console.log(b);console.log(a.x);console.log(b.x);

我們先來看一下普通連續賦值,即:變量賦值的類型是數據類型值

var a=3;var b=a=5;console.log(a);console.log(b);

一般來說,等號賦值的方向是從右至左,那么上面的代碼等同于下面這段代碼,那么我們就用下面這段代碼來解釋上面的代碼:

var a=3;  //全局變量a被賦值為3var a=5;  //此時a被重新賦值為5var b=a;  //將a的值賦給全局變量bconsole.log(a);//a最終的值就是第二次被賦的值:5console.log(b);//按照代碼執行順序b的值也是:5

上面的小案例用來拋磚引玉,現在我們來分析這個經典案例:

var a = {n: 1};//a第一次被賦值,是一個引用類型值,請記得變量賦值為引用類型值的時候,通過變量改變這個對象的時候,對象本身也發生了變化var b = a;//b被賦值為a,因此b就是對象{n:1}a.x = a = {n: 2};//這個賦值與之前的簡單案例有所不同,a.x指的是給a添加一個x屬性,在js的運算中“.”和"="運算符同時出現,會先執行"."運算//因此,賦值順序被改變了,是先給a.x賦值,再給a賦值//就是先執行:a.x={n:2},注意這里a并未改變,是給a的x屬性賦值為{n:2},a還是{n:1}//再回到我代碼中的第一句話,這個賦值行為,改變了{n:1}這個對象,即給它增加了名為x的屬性//再執行a={n:2},這是變量a不再是對象{n:1},而被重新賦值為一個新的對象{n:2};console.log(a);//自然此時a是對象{n:2}console.log(b);//a的二次賦值,并沒有影響b,b還是對象{n:1},但是由于a在重新賦值之前,給{n:1}這個對象,增加了一個x屬性,因此,這時的b已經有了x屬性console.log(a.x);//{n:2}對象沒有x屬性,所以結果是undefinedconsole.log(b.x);//綜上所述,這個結果是{n:2}

以上這篇js中變量的連續賦值(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹巴县| 长白| 井陉县| 石台县| 芦山县| 博罗县| 文化| 六枝特区| 清丰县| 筠连县| 洮南市| 共和县| 定边县| 台江县| 清水河县| 泰州市| 靖江市| 雅安市| 古交市| 宁蒗| 韶山市| 宝清县| 通江县| 汾西县| 宜昌市| 萨嘎县| 泉州市| 黄冈市| 台南县| 灌南县| 宁安市| 云梦县| 增城市| 孝昌县| 定兴县| 博爱县| 武清区| 铁岭县| 巨野县| 安阳县| 延庆县|