最近在看《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?
即:
push()
和unshift()
会返回新数组的长度,而pop()
和shift()
会返回被移除的元素(当数组为空时返回undefined
)来源:MDN
1,pusn 返回的是数组的长度。
2,pop,返回的是删除的元素。
3,unshift, 返回的是数组的长度。
4,shift 返回的是删除的元素。