为什么Array.prototype.fill()的这个例子抛出一个TypeError?

时间:2015-06-21 04:00:56

标签: javascript arrays ecmascript-6

当我遇到这个时,我正在阅读并熟悉一些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.在我看来,语句应该是像其他示例一样,完美无误地执行。我在控制台试了一下,Firefox并没有抱怨。

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

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

1 个答案:

答案 0 :(得分:2)

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

enter image description here

之前的例子最后没有分号:

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

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

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