如果您在Chrome
和Firefox
执行此代码,则会返回不同的行为。
var obj = {
key: 'val',
key2: 'val'
};
function x(b) {
setTimeout(b, 1000);
}
var keys = Object.keys(obj);
for (let ki of keys) {
x(function() {
console.log(ki); // Prints key2 key2 in Firefox, key key2 in Chrome
});
}

为什么会这样?这是一个错误吗?应该是Chrome返回的那个输出正确的输出吗?
答案 0 :(得分:1)
我说这是一个错误。您可以尝试在启用了Babel的jsBin上运行它,并在FireFox中看到Chrome行为:
http://jsbin.com/nadikatari/edit?html,js,console,output
听起来FireFox还没有实现。如果你想在此时使用ES6,你真的应该使用Babel转发到ES5。