javascript - Firefox 和 Node.js 之间的解释差异

标签 javascript node.js firefox ecmascript-6

我遇到了 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/

相关文章:

javascript - 使用 Mirth Connect JavaScript 将条形码字体输出到 PDF

javascript - 上传一个文件时 Req.files.file.length 未定义

javascript - 为什么 for 循环很早就结束了?

html - float : right not working properly in Firefox addon Code

HTML5 和音频标签 : redirect links not including file extension fail to load in FF/Chromium

python - 无法找到与 firefox、python、selenium 匹配的功能集(使用 vagrant)

javascript - 我需要制作一个警告框,显示用户在评论部分输入的内容

javascript - 持续从 XML 节点获取文本

javascript - 如何将文本插入多个带有 id 的文本区域中的一个?

node.js - 如何使用 Restify 服务器在 GridFS 中存储请求正文?