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