【问题标题】:Why does this example for Array.prototype.fill() throw a TypeError? [closed]为什么这个 Array.prototype.fill() 的例子会抛出 TypeError? [关闭]
【发布时间】:2015-06-21 04:00:56
【问题描述】:

我在阅读并熟悉一些 ES-6 功能时遇到了这个问题:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

如果您查看示例,第一个显示:

[1, 2, 3].fill(4); // [4, 4, 4] semicolon expected or 'TypeError: [4, 4, 4].fill(...)[3] is undefined' prompt

从参数的语法和描述来看,[1, 2, 3].fill(4) 看起来像是一个完全有效的调用,它将默认参数 start 为 0 和 end 为 3。在我看来,该语句应该完美地执行而不会出现错误,例如其余的例子。我在控制台试了一下,火狐没有报错。

谁能解释为什么这个例子(可能)会引发 TypeError,甚至抱怨分号?为什么在简单的控制台测试中不会发生错误?

起初我认为这一定是印刷错误,但我开始不这么认为。这是唯一可能引发错误的示例,并且错误消息非常特定于这一行。

【问题讨论】:

  • 我猜这是生成的文档,其中只是一个错误。
  • 我删除了评论。我认为这比帮助更令人困惑。有人添加评论是因为该示例之前没有分号:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 在 Firefox 中运行时似乎可以正常工作:jsfiddle.net/jfriend00/f62kaso2
  • 要明确:有人修复了示例并添加了此附加评论。虽然没有必要评论。这应该是编辑原因的一部分,而不是文档。
  • 这个问题现在已经过时了:D

标签: javascript arrays ecmascript-6


【解决方案1】:

每个人都可以在 MDN 上编辑页面。 Someone fixed an issue with the examples and added that comment:



前面的例子末尾没有分号:

[1, 2, 3].fill(4)               // [4, 4, 4]
[1, 2, 3].fill(4, 1)            // [1, 4, 4]

如果你只是复制和粘贴它们会导致错误。

但是,我认为该评论比有用so I removed it 更令人困惑。

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2021-12-22
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多