39

node.js 是否支持类似于MDN 上描述的 let 语句??

var x = 8,
    y = 12;

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

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

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

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

编辑

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

4

5 回答 5

84

是的,你可以在 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

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

于 2012-07-04T09:53:09.930 回答
33

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

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

有关完整版本的支持矩阵,请参见此处。

于 2016-06-26T01:23:17.853 回答
20
node --use_strict --harmony_scoping
于 2014-11-24T12:12:51.640 回答
7

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

var a = 5;

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

console.log(a); // => 5
于 2012-07-01T16:23:25.687 回答
1

您可以使用 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
于 2015-09-01T06:02:15.580 回答