我发现处理上的差异
[1,2,3].slice(1, undefined)
介于 chrome(返回 [2,3]
)和 firefox(返回 []
)之间。
当然,双方都同意 [2, 3]
作为
[1,2,3].slice(1)
并且他们都同意[]
作为
[1,2,3].slice(1, null)
这两个哪个是正确的?还是标准中没有明确规定?
最佳答案
7. If end is undefined, let relativeEnd be len; else let relativeEnd be ToInteger(end).
您使用的是哪个版本的 Firefox? Firefox 5 正确地给出了 [2, 3]
。 更新:Firefox 3.6 确实返回了一个空数组。
我不知道这里出了什么问题,因为如果你调用 slice()
而没有第二个参数,end
将是 undefined
也是。
更新:
玩了一会儿之后,如果传递给 .slice()
的第二个参数是 NaN
,似乎会返回一个空数组。示例(+undefined
返回 NaN):
> [1,2,3].slice(1, +undefined)
> []
这在 Firefox 和 Chrome 中是一样的。
不幸的是,这也不符合规范,因为ToInteger(NaN)
[spec]应该返回 0
,所以数组实际上应该被切片到最后。
我不是说这是在某些Firefox版本中不能正常工作的原因,我不知道实现。
轻微迷失方向的事件......没关系。
关于javascript - [1,2,3].slice(1,undefined) 的值应该是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968315/