Discuss / JavaScript / 疑问

疑问

Topic source

0.0

#1 Created at ... [Delete] [Delete and Lock User]
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
aCopy === arr; // false

想问问结果为何为false?不太懂,望指教。

饭吃了饿

#2 Created at ... [Delete] [Delete and Lock User]

我也是js新手,不过从后端经验来看,感觉应该差不多。如果说的不对,欢迎指正。

前面提到===会先比较类型,再比较值

  1. arr和aCopy的类型是一样的,所以如果值也相等,那么===结果就会返回true。
  2. 而arr和aCopy中存储的值是这个Array对象的地址(可以了解下普通变量和对象的区别),很明显这是2个对象,他们的地址是不同的,所以返回false

补充:

  1. 明明打印的相同,为什么值不同?虽然console.log(arr)和console.log(aCopy)打印的值是完全一样的,但是其中应该是自动做了处理,否则打印出来的是<0x123456789>之类的内存地址。

  • 1

Reply