javascript - [1,2,3].slice(1,undefined) 的值应该是多少?

标签 javascript firefox google-chrome

我发现处理上的差异

[1,2,3].slice(1, undefined)

介于 chrome(返回 [2,3])和 firefox(返回 [])之间。

当然,双方都同意 [2, 3] 作为

的值
[1,2,3].slice(1)

并且他们都同意[]作为

的值
[1,2,3].slice(1, null)

这两个哪个是正确的?还是标准中没有明确规定?

最佳答案

The specification says:

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/

相关文章:

javascript - 如何使用 webRTC 开始视频流?

javascript - 如何在 x 轴上仅显示 ForceShow-ticks?

firefox - 我应该用旧版本的 Firefox 测试我的应用程序吗?

html - Firefox、Edge 和 IE 中的 Flexbox column-reverse

firefox - 在 Firefox 和 Chrome 中隐藏多行 SELECT 的垂直滚动条?

javascript - Chrome 扩展程序获取元关键字

javascript - chrome如何将搜索窗口扩展到浏览器窗口之外

javascript - 如何像引用数组一样引用自定义数据结构?

javascript - View 未将模型传递给 Controller ​​ - ASP.Net MVC

javascript - 从谷歌浏览器中的任何网页获取所有电话标签