任何人都可以在他们的Node.js REPL中使用let语句吗?

可能吗? 在我的REPL中,似乎没有工作,没有--harmony也没有。

我真的想做的是使用for..of循环,但似乎更简单的事情排除故障,可能是相同的原因。

任何人都知道这些的状态?

 $ node --version v0.10.13 

这有点神秘,你会认为只有--harmony才会起作用,但是你需要在某个地方加一个use strictuse strict (你可以在命令行中这样做):

 $ node --harmony --use-strict > var letTest = function () { ... let x = 31; ... if (true) { ..... let x = 71; // different variable ..... console.log(x); // 71 ..... } ... console.log(x); // 31 ... } undefined > letTest() 71 31 undefined > 

非常高兴!

但是,我尝试了一个简单of理解,它没有工作:

[ square(x) for (x of [1,2,3,4,5]) ]

没有运气。 看起来你可能不得不通过目前的稳定版本来获得所有的和谐特征。

如果你从一个文件运行它,node.js会告诉你这个错误:

 SyntaxError: Illegal let declaration outside extended mode 

其细节在另一个问题给出什么是扩展模式? 正因为如此,扩展模式是build立在严格的模式,所以你不能使用它没有"use strict"和谐标志。 我从这里引用的原因是:

回想一下,ES5定义了“严格模式”,JS的一种新的执行模式。 我们称另一种模式为“经典模式”。 ES6定义了第三种“扩展模式”,它build立在严格模式之上,并启用新function。

最近的节点v11.7有迭代器,允许你使用循环。 我使用的例子是:

 function* fibonacci() { let prev = 0, curr = 1, temp; for (;;) { temp = prev; prev = curr; curr = temp + curr; yield curr; } } for (let n of fibonacci()) { if (n > 1000) break; console.log(n); } 

现在,我只能for of迭代器而不是简单的数组。