我在goolge控制台中测试了我的代码,发现concat()
无效,如下所示:
var a = ["a"]; //undefined
a.concat("b","c"); // ["a","b","c"]
现在,当我推送其他字符串时,该字符串将替换“b”和“c”
的索引那是[续]
a.push("e","f"); // 3
a // ["a", "e","f"]
您是否注意到按下字符串的行中的3。我觉得有趣的是,首先我们联系“b”和“c”,然后,当我尝试获得说1索引的值时,它返回undefined
!然后,当我们在同一个数组中推送"e"
和"f"
时,这些字符串将替换连接字符串的索引。现在的问题是:
1)为什么这些
concat
和push
函数显示出奇怪的行为?2)这是否意味着
cancat
功能的失败?3)这个
contact
函数是否只是名义上的?
答案 0 :(得分:3)
这是对的。 Concat没有像你期望的那样修改数组。
当你:
a.concat("b","c");
它返回一个[“a”,“b”,“c”]的数组,但你没有保存引用(你会这样做)
a = a.concat("b","c");
一些信息from the MDN:
concat不会改变这个或作为参数提供的任何数组,而是返回一个浅拷贝,其中包含从原始数组组合的相同元素的副本。