【问题标题】:Does node.js support the 'let' statement?node.js 是否支持 'let' 语句?
【发布时间】:2012-07-01 16:06:44
【问题描述】:

node.js 是否支持像 described on MDN? 这样的 let 语句?

var x = 8,
    y = 12;

let ( x = 5, y = 10) {
    return x + y;
} //15

如果没有,有没有办法用自动执行的匿名函数或其他东西来复制功能?

和/或是否有另一个 js 环境

  1. let和和
  2. 有一个 REPL,就像 node 一样?犀牛?

编辑

这个问题是很久以前提出的。截至 2015 年底,答案是“是的,是的”。 Harmony 功能默认包含在 io.js 3.3 中,最近在 4.x 版本中被带回 node.js。

【问题讨论】:

标签: javascript node.js


【解决方案1】:

是的,您可以在 node.js 中使用 let,但是您必须使用可选的 --harmony 标志来运行 node。试试下面的 test.js

"use strict"
var x = 8,
    y = 12;

{ let x = 5, y = 10; console.log(x + y); }

console.log(x + y);

然后运行文件node --harmony test.js,结果是:

15
20

我不建议在重要的生产应用程序中使用它,但该功能现在可用。

【讨论】:

  • @timothy-strimple 您能否评论一下为什么这对于生产应用程序来说不是一个好主意?
  • @TimothyStimple 你能解释一下为什么使用 'use strict' 有效但没有?
  • @ButuzGOL V8 仅在您处于 严格模式 时启用 ES6 中的 let(和一些其他功能)。
  • 这在最新的 node.js 版本中现在可以在没有 --harmony 标记的情况下工作。
  • @WilfredHughes 对于未来的访问者,--harmony 选项会打开尚不稳定的功能。 let 不再需要 --harmony... 它被认为是稳定的,现在可以在生产应用程序中安全使用。
【解决方案2】:

这是一个老问题,接受的答案不再正确。

let 支持已在 Node.js 4.x 中添加。

请参阅here 了解完整版支持矩阵。

【讨论】:

    【解决方案3】:
    node --use_strict --harmony_scoping
    

    【讨论】:

    • 这个答案适用于 Node 的实际版本,因为简单的 --harmony 选项不适用于 Node v0.12.4
    • 使用npm install 安装模块时会怎样?有npm --use_strict --harmony_scoping吗?
    【解决方案4】:

    我认为 Node 不支持let,但你可以这样做:

    var a = 5;
    
    (function () {
      var a = 6;
      console.log(a); // => 6
    })();
    
    console.log(a); // => 5
    

    【讨论】:

    • 这就是我的想法。它只是读起来很糟糕。我要let脾气暴躁
    • 我想知道你的 sn-p 能证明什么。通过创建匿名函数,您无论如何都创建了一个新范围。
    • 谢谢谢谢!!!完美解决了我在循环中使用具有回调的对象的问题。 (对象在回调之前被覆盖)向你致敬,我的朋友。
    • 这个答案被接受为 2012 年的实用解决方案,但 V8 和 Node 现在支持“让”。
    • 如果问题出在我正在使用的模块而不是我自己的代码中怎么办?我无法安装ejs,因为它包含let
    【解决方案5】:

    您可以使用 Babel 转译器并使用 let 以及许多其他 ES6/ES2015 功能。

    使用 babel:

    $ npm install --save-dev babel
    

    然后在你的package.json:

    "scripts": {
      "start": "babel-node index.js"
    }
    

    内部index.js

    let foo  = 'bar;
    

    然后启动服务器:

    $ npm start
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2014-10-07
      • 2013-12-06
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多