我发现concat与unshift有一些微妙的差异,不知道为什么... ...

1)
下面第二行,需要对hello进行重新赋值,不然第三行document.write的结果会是abcde没有f,g也没有x和y,
请问这是为什么?
var hello=['a','b','c','d','e','f','g'];
hello=hello.concat(['x','y']);
document.write(hello);

2)
下面第二行如果对hello重新赋值的话,document.write结果不是0abcdefg,而是8,请问这是为什么?
var hello=['a','b','c','d','e','f','g'];
hello = hello.unshift('0');
document.write(hello);

3)unshift和concat都是控制数列的固有函数,但为什么在这里会有差异?

倚天杖
浏览 127回答 2
2回答

Qyouu

<script type="text/javascript">var arr=['a','b','c','d','e','f','g'];arr.concat(['x','y']);alert(arr.concat(['x','y']));alert(typeof(arr.concat(['x','y'])));document.writeln(arr);document.write(arr.concat('x','y'));</script><script type="text/javascript">var arr=['a','b','c','d','e','f','g'];arr.unshift('0');alert(arr);alert(typeof(arr.unshift('0')));document.writeln(arr);document.writeln(arr.unshift('0'));</script>我自己做了实验,总结出你自己没有好好区分数组和数组.方法()。第一个concat,也不需要对hellow从新赋值,你要么直接输出arr.concat('x','y').要么重新定义一个数组来存放结果。第二个arr是数组,arr.unshift('0')是数组方法返回的是个number。&nbsp;

小唯快跑啊

var hello=['a','b','c','d','e','f','g'];> undefinedhello.concat(['x','y']);> ["a", "b", "c", "d", "e", "f", "g", "x", "y"]hello> ["a", "b", "c", "d", "e", "f", "g"]综上:concat 是连接之后的新的数组,但是不会修改原始数组,原始数组不发生变化。这个是我在浏览器控制台打印的信息,和你的表述不同unshift返回的是被修改后的数组的长度,所以是8
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript