登陆

Javascript中pop() push() unshift() shift()对数组操作之后返回值是什么?

最近在看《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?

# JavaScript
女神的闺蜜爱上我女神的闺蜜爱上我1597 天前749 次浏览

全部回复(2)我要回复

  • 小皮

    小皮2017-06-12 09:27:04

    Array.prototype.pop()
    Return value
    The removed element from the array; undefined if the array is empty.

    Array.prototype.push()
    Return value
    The new length property of the object upon which the method was called.

    Array.prototype.unshift()
    Return value
    The new length property of the object upon which the method was called.

    Array.prototype.shift()
    Return value
    The removed element from the array; undefined if the array is empty.

    即:push()unshift() 会返回新数组的长度,而 pop()shift() 会返回被移除的元素(当数组为空时返回 undefined

    来源:MDN

    回复
    0
  • 迷茫

    迷茫2017-06-12 09:27:04

    1,pusn 返回的是数组的长度。
    2,pop,返回的是删除的元素。
    3,unshift, 返回的是数组的长度。
    4,shift 返回的是删除的元素。

    回复
    0
  • 取消回复发送