最近在看《javascript权威指南(第6版)》,淘宝团队翻译的。看到数组那一章节,介绍JS数组的一些方法。
pop() push() 把数组当作栈,然后在数组的尾部分别是删除添加数组元素。
unshift() shift()也是把数组当作栈,但,是在数组的头部分别删除添加元素。
四个方法都会更新数组的长度。
但是对于提到的返回值,看到给的示例有点疑惑。
书上的示例代码:
var statck=[]; //stack:[]
stack.push(1,2); //stack:[1,2] 返回2
stack.pop(); //stack:[1] 返回2
stack.push(3); //stack:[1,3] 返回2
stack.pop(); //stack:[1] 返回3
stack.push([4,5]); //stack:[1,[4,5]] 返回2
stack.pop(); //stack:[1] 返回[4,5]
stack.pop(); // stack:[] 返回1
返回值应该是当前删除或者插入的值
第二行最后插入的是数值2,所以返回值是2.
那为什么上面第4行代码还有返回值2?不是数值3么?因为插入的是数值3.
stack.push(3); //stack:[1,3] 返回2
然后第6行也不理解后面的返回值:
stack.push([4,5]); //stack:[1,[4,5]] 返回2
为什么返回数值是2不是5?
PHP中文网2017-06-12 09:27:04
Array.prototype.pop()
返回值
数组中移除的元素;如果数组为空则未定义。
Array.prototype.push()
返回值
调用该方法的对象的新长度属性。
Array.prototype.unshift()
返回值
调用该方法的对象的新长度属性。
Array.prototype.shift()
返回值
数组中移除的元素;如果数组为空则未定义。
即:push()
和 unshift()
会返回新数组的长度,而 pop()
和 shift()
会返回被移除的元素(当数组为空时返回 undefined
)
来源:MDN