Array.prototype.slice - 如果结束参数大于数组长度怎么办?

时间:2016-04-13 10:39:38

标签: javascript arrays

我无法找到它 - 如果传递给end的{​​{1}}参数大于数组长度会怎样?

我已对它进行过测试并且可以正常使用(在Chrome中),但我不确定这是否属于标准行为,因此可以常用?

3 个答案:

答案 0 :(得分:11)

如果end大于数组的长度,则使用数组的长度。来自the spec

  

如果relativeEnd< 0,最后是max((len + relativeEnd),0); 否则让最终成为min(relativeEnd,len)。

是的,这是可以使用的标准行为。

解决问题的这一部分:

  

我找不到它

我发现最快的方法是搜索“mdn数组切片” - 第一个结果通常是Mozilla开发者网络上的相关文档页面,在本例中为this page。每个页面都有一个specifications部分,它链接到规范的右侧部分。需要一点点习惯如何阅读规格,但有时候深入了解它们。

答案 1 :(得分:1)

,符合规范。

根据spec

  
      
  1. 如果relativeEnd< 0,最后是max((len + relativeEnd),0);否则让最后成为min(relativeEnd,len)。
  2.   

这意味着最终值为 relativeEnd min(作为参数提供的结束值)和 len (数组的长度) )。

  
      
  1. 重复,而k <最终
  2.   

因此,如果未指定length,则循环完成直到数组的end

答案 2 :(得分:0)

仅在min(array.length, endArgument)之前复制数组。是的,这是standardised in §22.1.3.22,可以信任在每个浏览器中工作。