12
我有一个像下面这样的循环:语法错误:在常量声明中缺少=火狐50
const bar = {a: 1, b: 2}
for (const k in bar) { //Throws in Firefox but not Chrome 54
console.log(k)
}
这是一个错误?或者可能是规范中的灰色区域?
我有一个像下面这样的循环:语法错误:在常量声明中缺少=火狐50
const bar = {a: 1, b: 2}
for (const k in bar) { //Throws in Firefox but not Chrome 54
console.log(k)
}
这是一个错误?或者可能是规范中的灰色区域?
是的,这似乎是Firefox中的一个错误。所述spec allows the use of const
:
IterationStatement:
for(ForDeclaration in Expression) Statement
ForDeclaration:
LetOrConst ForBinding
ForBinding:
BindingIdentifier
BindingPattern
(截短的和简化的)
看来Firefox是不正确地解释ForDeclaration作为LexicalBinding。
相关:ECMAScript 2015: const in for loops
这似乎是对这一问题的错误报告:https://bugzilla.mozilla.org/show_bug.cgi?id=1101653。
正确let
和const
即将火狐:https://twitter.com/evilpies/status/768881995912994816
咦,火狐正在读取规格时,我犯同样的错误。没有想过检查特殊行为的循环。 – ssube