js 变量赋值

写js的时候遇到一个问题,使用$post获取的返回值,设为data.menu,是个数组

另有变量a和b,


var i

for (i = 0; i < data.menu.length; i++) {

  this.a[i] = data.menu[i]

}

this.b = data.menu

(这是我在.vue文件中的写法,a和b均是data中定义的空数组,故使用this.)

结果这两种方式得到的结果不同,在使用上也不同,只有b可以正常使用(作为变量传入component中)

在作比较时,若是使用if (a[0].data1 === b[0].data1),if (a[0] === b[0])等方式比较数组元素或内部值,结果为true,

但是直接比较if (a === b)却为false,不知何解


鸿蒙传说
浏览 567回答 7
7回答

长风秋雁

很明显啊,javascript数组不能直接比较是否相等。

翻翻过去那场雪

对象是引用类型,不是同一个引用的对象不相等

德玛西亚99

a和b都是引用类型, ===的时候会比较他们引用地址, 循环赋值a的时候属于深拷贝,所以为false

白猪掌柜的

js不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,都会返回false,要判断JS中的两个数组是否相同,需要先将数组转换为字符串,再作比较。

慕桂英4014372

你的a是循环出来的,说明a始终只等于最后一组数据。而b是整组数据。你前面的比较会相等,只能说明你判断的那两个值就是相等的。if (a[0].data1 === b[0].data1),if (a[0] === b[0])这里比较的都是具体的值if (a === b)这里比较的是整个数据,而a只是最后一个i,b是所有的数据

繁花不似锦

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

精慕HU

当a[i]=menu[i]的时候,a[i]指针指向menu[i],但a仍然指向初始化时的数组并不是menu,而b赋值后指针直接指向menu对应的数组
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript