在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js 變量賦值

js 變量賦值

寫(xiě)js的時(shí)候遇到一個(gè)問(wèn)題,使用$post獲取的返回值,設(shè)為data.menu,是個(gè)數(shù)組
另有變量ab,

var i
for (i = 0; i < data.menu.length; i++) {
  this.a[i] = data.menu[i]
}
this.b = data.menu

(這是我在.vue文件中的寫(xiě)法,ab均是data中定義的空數(shù)組,故使用this.)
結(jié)果這兩種方式得到的結(jié)果不同,在使用上也不同,只有b可以正常使用(作為變量傳入component中)
在作比較時(shí),若是使用if (a[0].data1 === b[0].data1)if (a[0] === b[0])等方式比較數(shù)組元素或內(nèi)部值,結(jié)果為true
但是直接比較if (a === b)卻為false,不知何解

回答
編輯回答
陌離殤

a和b都是引用類(lèi)型, ===的時(shí)候會(huì)比較他們引用地址, 循環(huán)賦值a的時(shí)候?qū)儆谏羁截?所以為false

2017年7月15日 10:43
編輯回答
安若晴

js不能直接用==或者===來(lái)判斷兩個(gè)數(shù)組是否相等,無(wú)論是相等還是全等都不行,都會(huì)返回false,要判斷JS中的兩個(gè)數(shù)組是否相同,需要先將數(shù)組轉(zhuǎn)換為字符串,再作比較。

2017年5月21日 21:47
編輯回答
夢(mèng)囈

[]===[]為false,了解一下

2017年2月21日 04:14
編輯回答
淺時(shí)光

你的a是循環(huán)出來(lái)的,說(shuō)明a始終只等于最后一組數(shù)據(jù)。而b是整組數(shù)據(jù)。你前面的比較會(huì)相等,只能說(shuō)明你判斷的那兩個(gè)值就是相等的。
if (a[0].data1 === b[0].data1),if (a[0] === b[0])這里比較的都是具體的值
if (a === b)這里比較的是整個(gè)數(shù)據(jù),而a只是最后一個(gè)i,b是所有的數(shù)據(jù)

2018年3月15日 00:22
編輯回答
放開(kāi)她

對(duì)象是引用類(lèi)型,不是同一個(gè)引用的對(duì)象不相等

2018年6月14日 00:03
編輯回答
兔寶寶

當(dāng)a[i]=menu[i]的時(shí)候,a[i]指針指向menu[i],但a仍然指向初始化時(shí)的數(shù)組并不是menu,而b賦值后指針直接指向menu對(duì)應(yīng)的數(shù)組

2017年5月8日 11:38
編輯回答
別逞強(qiáng)

很明顯啊,javascript數(shù)組不能直接比較是否相等。

2017年3月20日 02:49