可能吗?它似乎在我的 REPL 中不起作用,无论有没有--harmony
.
我真正想做的是使用 for..of 循环,但 let 似乎更容易排除故障,并且可能是相同的原因。
有人知道这些的状态吗?
可能吗?它似乎在我的 REPL 中不起作用,无论有没有--harmony
.
我真正想做的是使用 for..of 循环,但 let 似乎更容易排除故障,并且可能是相同的原因。
有人知道这些的状态吗?
$ node --version
v0.10.13
这有点神秘,您认为它--harmony
会起作用,但您需要在use 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
它的详细信息在另一个问题什么是扩展模式?碰巧扩展模式是建立在严格模式上的,所以你不能在没有"use strict"
和和谐标志的情况下使用它。我将从这里引用的原因:
回想一下,ES5 定义了“严格模式”,一种 JS 的新执行模式。我们称另一种模式为“经典模式”。ES6 定义了第三种“扩展模式”,它建立在严格模式之上,并启用了新特性。
最近的节点 v11.7 具有允许您使用for of
循环的迭代器。我使用的示例:
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
over 迭代器而不是简单的数组。