Discuss / JavaScript / 不给slice()传参,相当于复制一个Array,那为什么最后判断为false?

不给slice()传参,相当于复制一个Array,那为什么最后判断为false?

Topic source

LovinZZ

#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

阿星otaku

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

当‘===’对两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象,上述代码中实际存在两个数组变量,但他们的值是相等的,不知道有没有说清啊

Kid丶Mid

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

因为slice会返回新的数组,所以尽管aCopy和arr的内容一样,实际上他们的内存地址不同,所以aCopy===arr为false

风之一生

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

var a = arr.splice(0,arr.length-1).join(',')

var b = arr[arr.length-1]

console.log('欢迎'+a+'和'+b+'同学!');


  • 1

Reply