Discuss / JavaScript / 疑问

疑问

Topic source

请问一下为什么第四行会是false?

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
aCopy === arr; // false

梓沫Aaron

#2 Created at ... [Delete] [Delete and Lock User]
  • ==相等 : 不考虑数据类型,只做值的比较(包含自动类型转换)

  • ===全等 : 不会进行数据类型转换,要求数据类型一致并且值相等才判断全等

  • 两个列表的元素是一样的,内存地址也不会是一样的哦~

同等疑惑。。。

建议去了解一下基本数据类型、引用数据类型,深拷贝、浅拷贝的原理就可以明白了。slice()属于不完全的深拷贝。

Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,JS代码都会返回false。

应该用tostring方法把他转换成字符串再比较


  • 1

Reply