2014-10-17 2 views
1

При запуске узла v0.11.14 REPL с --harmony вариант и попробовать-петли, я получаю:For-петлевой в узле --harmony не работает с массивами

> for (var i of [3, 4, 5]) console.log(i); 
TypeError: undefined is not a function 

То же самое для наборов , Но он отлично работает с генераторами:

> function* Counter() { var n=3; while (n < 7) { yield n++; } } 
> var c = new Counter(); 
> for (var i of c) console.log(i); 
3 
4 
5 
6 

Хотя первый пример из ecmascript wiki page является:

for (word of ["one", "two", "three"]) { 
    alert(word); 
} 

MDN page и Traceur docs содержат тот же самый пример. Мне не удалось выполнить Google for-in in nodejs. Должна ли она работать в узле или я чего-то не хватает?

ответ

1

for .. of и итерируемые объекты были реализованы отдельно в версии 8. Похоже, что в v8 в комплекте с узлом 0.11.14 вы можете использовать его только с генераторами.

Свойство obj[Symbol.iterator] Чтобы проверить, подходит ли объект, он должен быть функцией. В моем сборке узлов с v8 3.29.93 все работает так, как ожидалось. Таким образом, вам, вероятно, придется подождать следующего релиза 0.11 (или 0.12).