我遇到了 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 引擎进行测试。
知道差异的原因是什么,以及哪种实现对于规范来说是正确的吗?
最佳答案
您的 Node 版本在这里是正确的,for
循环中的 let
应该具有 block 作用域。
FF 48 simply doesn't support "for/for-in loop iteration scope"然而,它似乎已在 FF 51 中得到修复。
关于javascript - Firefox 和 Node.js 之间的解释差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516179/