`
yiminghe
  • 浏览: 1462444 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

splice 参数问题

阅读更多

splice 在 ie 与 firefox,chrome之间表现不太一致,希望大家以后也小心一点,今天遇到记录一下:

 

[1,2,3].splice(1)

 

ie下运行后变为 [1,2,3] ,相当于

 

[1,2,3].splice(1,0)

 

firefox ,chrome运行后变为 [1],相当于

 

[1,2,3].splice(1,[1,2,3].length-1)

 

这就涉及到了 splice第二个参数的默认值问题,看看 ECMA-262-5th 规范


Array.prototype.splice (start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )


The length property of the splice method is 2.


证明 splice 函数申明有两个形参 start 与 deleteCount ,当调用者忽略deleteCount则deleteCount为undefined,那么看一下具体对于deleteCount的处理:


Let actualDeleteCount be min(max(ToInteger(deleteCount),0), len – actualStart).


而 ToInteger又依赖调用了 ToNumber


1.Let number be the result of calling ToNumber on the input argument.
2.If number is NaN, return +0.
3.If number is +0, −0, +∞, or −∞, return number.
4.Return the result of computing sign(number) * floor(abs(number)).


最后 ToNumber则规定 当遇到Undefined时返回NaN,那么ToInteger返回0,那么最后 actualDeleteCount为 0


则 IE表现为符合标准的正确行为,不知道为何 firefox,chrome没有遵从标准.



ps: 在 OReilly.JavaScript.The.Definitive.Guide.5th.Edition 中支持firefox,chrome的做法:


array.splice(start, deleteCount, value, ...)


deleteCount

The number of elements, starting with and including start, to be deleted from array. This argument is optional; if not specified, splice( ) deletes all elements from start to the end of the array.

不解

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论
1 楼 feipigzi 2012-08-06  
w3c 标准 :如果删除数量不指定,则默认删除开始位置后面的所有元素

相关推荐

    splice性能测试

    2. **splice函数用法**:博客可能介绍了如何在C代码中正确调用splice函数,包括参数设置、错误处理等关键点。 3. **性能指标**:博主可能会讨论如何测量和分析吞吐量、延迟、CPU利用率等性能指标,以评估splice的...

    JavaScript中的splice方法用法详解

    当调用splice方法时,提供两个参数:第一个参数是要删除的第一项的位置(从0开始计数),第二个参数是要删除的项数。例如,在`array.splice(index, num)`中,`index`是起始删除位置,`num`是要删除的元素数量。在...

    浅谈js数组splice删除某个元素爬坑

    先来看下几个概念: // splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组) ...本身是没问题 代码如下: var arr = [张三,李四,王五,赵六]; // 删除王五 arr.splice(arr.indexOf(王

    splice-feats解析1

    - `--print-args`: 输出命令行参数到标准错误流(stderr)。 - `--verbose`: 设置日志级别,数值越大,日志信息越详细,默认为0。 通过这些选项,用户可以根据自己的需求调整和优化特征拼接过程。在实际应用中,`...

    JavaScript splice()方法详解

    语法arrayObject.splice(index,howmany,element1,…..,elementX)参数 描述index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。howmany 必需。规定应该删除多少元素。...

    javascript splice数组简单操作

    2. splice方法的参数:splice方法接受三个或更多的参数。第一个参数指定开始操作的索引位置,第二个参数表示要删除的元素数量,之后的参数可以是零个或多个,表示要添加进数组的新元素。 3. 删除数组元素:splice...

    JavaScript中的splice()方法使用详解

    下面我们将详细讲解`splice()`方法的用法和参数含义。 **方法语法:** ```javascript array.splice(index, howMany, [element1][, ..., elementN]) ``` **参数详解:** 1. **index**:这是一个必需的参数,表示...

    JS数组splice操作实例分析

    文章中还提到了关于splice参数的一些细节,例如,当数组的第二个参数为2时,表示从`start`索引位置开始删除元素,删除元素的数量为2。这对于在数组中删除多个元素或者在特定位置进行元素的替换或插入是非常有用的。 ...

    体验js中splice()的强大(插入、删除或替换数组的元素)

    除了这些基本用法,`splice()`还可以接受更多的参数,用于插入更多元素或者删除更多元素。值得注意的是,`splice()`会直接修改原数组,而不是创建一个新的数组。因此,在使用时需谨慎,特别是在处理大数据量的数组时...

    js_array-method-splice

    `splice()` 方法接受一个或多个参数,通常至少包括两个:开始位置(index)和删除项数(howMany)。它可以在指定位置开始删除一定数量的元素,然后可以插入任意数量的新元素。其基本语法如下: ```javascript array...

    JavaScript中数组slice和splice的对比小结

    `splice()`的第一个参数是起始位置,第二个参数是可选的要删除的元素个数,后续的参数是可选的要插入的新元素。例如: - 删除元素:`color.splice(1, 2)`将删除`color`数组中索引为1和2的两个元素。 - 插入元素:`...

    php中array_slice和array_splice函数解析

    在这个例子中,`array_splice`不仅截取了数组,还删除了指定范围的元素,并用`replacement`参数提供的值替换。 总结来说,`array_slice`主要用于无损地获取数组的部分视图,而`array_splice`则可以用于动态调整数组...

    原生JS中slice()方法和splice()区别

    `splice()` 接受至少两个参数,`index` 和 `howmany`,以及可选的 `item(s)`。`index` 指定开始修改的位置,`howmany` 定义要删除的元素数量,而 `item(s)` 是要插入的新元素。如果 `howmany` 为0,则表示不删除任何...

    JavaScript中splice与slice的区别

    `splice()`方法接受三个主要参数:`index`、`howmany`和`item1, ..., itemX`。`index`指定了开始操作的位置,`howmany`定义了要删除的元素数量,`item1, ..., itemX`是可选的,用于在指定位置插入新元素。如果`...

    js 数组操作之pop,push,unshift,splice,shift

    JavaScript提供了多种内置方法来操作数组,包括但不限于pop、push、unshift和splice等方法。 1. pop方法:pop方法用于移除数组中的最后一个元素,并返回被移除的元素。如果数组为空,则返回undefined。pop方法会...

Global site tag (gtag.js) - Google Analytics