最近在看《javascript權(quán)威指南(第6版)》,淘寶團(tuán)隊(duì)翻譯的。看到數(shù)組那一章節(jié),介紹JS數(shù)組的一些方法。
pop() push() 把數(shù)組當(dāng)作棧,然后在數(shù)組的尾部分別是刪除添加數(shù)組元素。
unshift() shift()也是把數(shù)組當(dāng)作棧,但,是在數(shù)組的頭部分別刪除添加元素。
四個(gè)方法都會(huì)更新數(shù)組的長(zhǎng)度。
但是對(duì)于提到的返回值,看到給的示例有點(diǎn)疑惑。
書上的示例代碼:
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
返回值應(yīng)該是當(dāng)前刪除或者插入的值
第二行最后插入的是數(shù)值2,所以返回值是2.
那為什么上面第4行代碼還有返回值2?不是數(shù)值3么?因?yàn)椴迦氲氖菙?shù)值3.
stack.push(3); //stack:[1,3] 返回2
然后第6行也不理解后面的返回值:
stack.push([4,5]); //stack:[1,[4,5]] 返回2
為什么返回?cái)?shù)值是2不是5?
Array.prototype.pop()
返回值
數(shù)組中移除的元素;如果數(shù)組為空則未定義。
Array.prototype.push()
返回值
調(diào)用該方法的對(duì)象的新長(zhǎng)度屬性。
Array.prototype.unshift()
返回值
調(diào)用該方法的對(duì)象的新長(zhǎng)度屬性。
Array.prototype.shift()
返回值
數(shù)組中移除的元素;如果數(shù)組為空則未定義。
即:push()
和 unshift()
會(huì)返回新數(shù)組的長(zhǎng)度,而 pop()
和 shift()
會(huì)返回被移除的元素(當(dāng)數(shù)組為空時(shí)返回 undefined
)
來(lái)源:MDN
1,pusn 返回的是數(shù)組的長(zhǎng)度。
2,pop,返回的是刪除的元素。
3,unshift, 返回的是數(shù)組的長(zhǎng)度。
4,shift 返回的是刪除的元素。