标签:拷贝 over 有意思 新项目 tab rip col 今天 push
今天看前同事的代码,有个写法很有意思: splice(0)。
有意思的是,这并不是一个“合法”的写法。
w3school是这样写的:
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, ..., itemX | 可选。向数组添加的新项目。 |
index和howmany都是必须的,但似乎只写index也可以...
那么,到底 splice(0) 会怎么样呢?
stackoverflow 上有个问题很有意思。
有个人说,我想把数组A的东西拷贝到数组B,结果数组A怎么就没了?
var ArrayA = []; var ArrayB = []; ArrayA.push(1); ArrayA.push(2); ArrayB = ArrayA.splice(0); alert(ArrayA.length);
没错 splice() 会修改原数组,而 splice(0) 会把原数组清空。
var a = [1,2,3,4,5] ,b = a.splice(0); //=> a = [], b = [1,2,3,4,5]
那怎么解答这个人的问题?
很简单,用 slice() 就可以了。slice() 不会改变原数组。
var a = [1,2,3,4,5] ,b = a.slice(); //=> a = [1,2,3,4,5], b = [1,2,3,4,5]
标签:拷贝 over 有意思 新项目 tab rip col 今天 push
原文地址:https://www.cnblogs.com/foxcharon/p/10140685.html