众所周知,在js数组中,有四个常见的方法,分别是:
- push() 方法(在数组结尾处)向数组添加一个新的元素,并返回新数组的长度。
- pop() 方法从数组中删除最后一个元素,并返回“被弹出”的值。
- shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
- unshift() 方法(在开头)向数组添加新元素,并返回新数组的长度。
然而,我写下如下代码:
var arr = new Array();
arr.push("first","second","third");
console.log(arr);
arr.pop();
console.log(arr);
结果在控制台上看到了两个一模一样的值,按常理说到第一个console.log时应该有三个属性,然后到第二个console.log时失去一个属性,还剩2个属性,但结果却是两个console.log都是有着相同属性:
{"0":"first","1":"second","length":2} at html:10
{"0":"first","1":"second","length":2} at html:12
在chrome,edge中也是如此,很奇怪了,难不成pop方法(其他三个方法都有类似情况)还有什么隐含的东西?
最后发现可能与console.log有关,而使用document.write(),或alert时则无异常:
arr.push("first","second","third");
document.write(arr + " ");
arr.pop();
document.write(arr);
结果是:
first,second,third first,second
符合预期;
其实用console.log也可以实现,只不过需要在第一个console.log括号中加上 + ” “ 如下:
console.log(arr + "");
本人才疏学浅,目前暂时无法给出一个具体的原因,只有以后再来回答了吧
本文的部分内容来自于实践,暂时未找到相关的知识来支撑(__^^__原谅我读书太少),可能存在某些问题,欢迎各位提出,欢迎讨论。