今天看前同事的代码,有个写法很有意思: 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]

 

相关文章:

  • 2021-09-27
  • 2021-06-16
  • 2021-09-19
猜你喜欢
  • 2022-01-17
  • 2021-09-05
  • 2022-12-23
  • 2021-04-27
  • 2021-08-25
相关资源
相似解决方案