真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、自適應(yīng)網(wǎng)站建設(shè)、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體。

下面就是這個經(jīng)典案例:

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);

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

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

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

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

上面的小案例用來拋磚引玉,現(xiàn)在我們來分析這個經(jīng)典案例:

var a = {n: 1};//a第一次被賦值,是一個引用類型值,請記得變量賦值為引用類型值的時候,通過變量改變這個對象的時候,對象本身也發(fā)生了變化
var b = a;//b被賦值為a,因此b就是對象{n:1}

a.x = a = {n: 2};
//這個賦值與之前的簡單案例有所不同,a.x指的是給a添加一個x屬性,在js的運算中“.”和"="運算符同時出現(xiàn),會先執(zhí)行"."運算
//因此,賦值順序被改變了,是先給a.x賦值,再給a賦值
//就是先執(zhí)行:a.x={n:2},注意這里a并未改變,是給a的x屬性賦值為{n:2},a還是{n:1}
//再回到我代碼中的第一句話,這個賦值行為,改變了{n:1}這個對象,即給它增加了名為x的屬性
//再執(zhí)行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已經(jīng)有了x屬性
console.log(a.x);//{n:2}對象沒有x屬性,所以結(jié)果是undefined
console.log(b.x);//綜上所述,這個結(jié)果是{n:2}

以上這篇js中變量的連續(xù)賦值(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


新聞名稱:js中變量的連續(xù)賦值(實例講解)
分享URL:http://weahome.cn/article/gdehjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部