首页  >  问答  >  正文

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?

女神的闺蜜爱上我女神的闺蜜爱上我2710 天前1552

全部回复(2)我来回复

  • PHP中文网

    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

    回复
    0
  • 迷茫

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

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

    回复
    0
  • 取消回复