Node.js(v0.4.11)でfor each ... in
を使用したかった。
私はこれを次のように使用します:
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以降でサポートされています。
for each ... in
の使用法については、 MDN を参照してください。
残念ながら、ノードはJavaScript 1.6で指定されているにもかかわらず、for each ... in
をサポートしていません。 Chromeは同じJavaScriptエンジンを使用し、 と報告 に同様の欠点があります。
array.forEach(function(item) { /* etc etc */ })
で解決する必要があります。
編集:Googleの公式V8ウェブサイトから:
V8は、 ECMA-262 で指定されているECMAScriptを実装します。
for each ...in
がJavaScript 1.6にあると言っている同じMDN Webサイトでは、ECMAバージョンにはない、つまり、おそらくNodeにないということです。
for (var i in conf) {
val = conf[i];
console.log(val.path);
}
https://github.com/cscott/jsshaper JavaScript 1.8からECMAScript 5.1へのトランスレーターを実装します。これにより、Webkitまたはノードで実行されるコードで「for each」を使用できます。
Node.jsでサポートされているECMAScriptのバージョンにはfor each in
がありません。現在はFirefoxでのみサポートされています。
注意すべき重要なことは、JavaScriptバージョンはGecko(Firefoxのエンジン)とRhino(常に数バージョン遅れている)にのみ関連するということです。 Nodeは、ECMAScript仕様に準拠したV8を使用します
これは古い質問かもしれませんが、物事を最新の状態に保つために、NodeJSで動作するjavascriptのforEachメソッドがあります。 docs からのリンクです。そして例:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
pHPに慣れている人のために:
//add this function
function foreach(arr, func){
for(var i in arr){
func(i, arr[i]);
}
}
使用法:
foreach(myArray, function(i, v){
//run code here
});
pHPバージョンと同様:
foreach(myArray as i=>v){
//run code here
}