我遇到过Firefox和Node.js之间的异常。给出以下代码:
'use strict';
const obj = {};
for (let f of ['left', 'right']) {
obj[f] = function() {
return f;
};
}
console.log(obj.left());
console.log(obj.right());
Firefox(48.0)输出
right
right
而Node.js(6.4.0)输出
left
right
两者都在Ubuntu 14.04上。我没有可能用其他ECMAScript引擎进行测试。
知道差异的原因是什么,以及哪个实现在规范方面是正确的?
答案 0 :(得分:1)
此处您的Node版本正确,let
循环中的for
应具有块范围。
FF 48 simply doesn't support "for/for-in loop iteration scope"但它似乎是用FF 51修复的。