Узел.js: для каждого ... в не работает
Я хотел использовать for each ... in
С узла.в JS (версии v0.4.11).
я использую его так:
var conf = {
index: {
path: {
first: "index.html",
pattern: "index/{num}.html"
},
template: "index.tpl",
limit: 8
},
feed: {
path: "feed.xml",
template: "atom.tpl",
limit: 8
}
}
for each (var index in conf) {
console.log(index.path);
}
я получаю следующее сообщение об ошибке:
for each (var index in conf) {
^^^^
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
SyntaxError: Unexpected identifier
at Module._compile (module.js:397:25)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at require (module.js:346:19)
at Object.<anonymous> (/home/paul/dev/indexing/lib/Index.js:3:13)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
где ошибка? for each ... in
поддерживается начиная с Javascript 1.6.
посмотреть MDN для получения информации об использовании for each ... in
.
5 ответов:
к сожалению, узел не поддерживает
for each ... in
, даже если он указан в JavaScript 1.6. Chrome использует тот же движок JavaScript и как сообщает имея подобные недостатки.вам придется довольствоваться
array.forEach(function(item) { /* etc etc */ })
.редактировать: с официального сайта Google V8:
V8 реализует ECMAScript, как указано в ECMA-262.
на том же сайте MDN, где говорится, что
for each ...in
is в JavaScript 1.6 говорится, что он не находится ни в одной версии ECMA - отсюда, предположительно, его отсутствие в узле.
https://github.com/cscott/jsshaper реализует переводчик с JavaScript 1.8 на ECMAScript 5.1, который позволит вам использовать "для каждого" в коде, запущенном на webkit или узле.
нет
for each in
в версии ECMAScript, поддерживаемой Node.js, в настоящее время поддерживается только firefox.важно отметить, что версии JavaScript имеют отношение только к Gecko (движок Firefox) и Rhino (который всегда находится на несколько версий позади). Узел использует V8, который следует спецификации ECMAScript
Это может быть старый qustion, но просто чтобы держать вещи в курсе, есть метод forEach в javascript, который работает с NodeJS. Вот ссылка из docs. И пример:
count = countElements.length; if (count > 0) { countElements.forEach(function(countElement){ console.log(countElement); }); }