node.js是否支持'let'语句?

ben*_*hor 37 javascript node.js

node.js是否支持let语句,就像在MDN描述的那样

var x = 8,
    y = 12;

let ( x = 5, y = 10) {
    return x + y;
} //15
Run Code Online (Sandbox Code Playgroud)

如果没有,有没有办法用自执行匿名函数复制功能?

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

  1. let和和
  2. 有节点的REPL吗?犀牛?

编辑:

很久以前就提出过这个问题.截至目前,2015年底,答案是"是的,是的确如此".默认情况下,在io.js 3.3中包含了Harmony功能,并且最近使用4.x版本将其恢复到node.js.

Tim*_*ple 84

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

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

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

console.log(x + y);
Run Code Online (Sandbox Code Playgroud)

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

15
20
Run Code Online (Sandbox Code Playgroud)

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

  • @ timothy-strimple你能评论为什么这对生产应用来说不是一个好主意吗? (7认同)
  • 现在,在最新的node.js版本中没有`--harmony`标签. (7认同)
  • 这应该是公认的答案 (4认同)
  • @WilfredHughes对于未来的访问者,`--harmony`选项打开了尚不稳定的功能.`let`不再需要`--harmony` ......它被认为是稳定的,现在可以安全地用于生产应用程序. (3认同)
  • @TimothyStimple你可以解释一下为什么'use strict'有效但不是吗? (2认同)

Joh*_*yHK 31

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

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

请参阅此处获取完整版支持矩阵.


Sha*_*oke 20

node --use_strict --harmony_scoping
Run Code Online (Sandbox Code Playgroud)


Tod*_*ell 6

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

var a = 5;

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

console.log(a); // => 5
Run Code Online (Sandbox Code Playgroud)

  • 这个答案被认为是2012年的实用解决方案,但现在V8和Node支持'let'. (7认同)
  • 这就是我的想法.它只是阅读不好.我想'让'!*发脾气* (6认同)
  • 谢谢谢谢!!!完美修复我的问题使用循环内的对象有回调.(在回调之前,对象会被覆盖掉)我的朋友对你赞不绝口. (2认同)