動かないと思いきや、ちゃんと動くJavaScriptコード
昨日のコードは動作しませんが、以下のコードはちゃんと動作します。
Array.prototype.each = function( proc, self ) { for ( var i=0; i<this.length; i++ ) proc.call( self, this[i], i, this ); } function main() { var stdout = document.getElementById( "out" ); ["mii","tora","shiro"].each( function(item) { stdout.innerHTML += item + "<br/>"; }); }
あれ、これ昔試して動かなかった覚えがあるんだけど!と思ったら、ActionScriptだった。以下のActionScriptコードはコンバイルエラーになります。
package { import flash.display.*; import flash.text.*; public class Sample extends Sprite { public function Sample(){ // 結果の表示用 var stdout:TextField = new TextField(); stdout.width = 500; stdout.height = 500; addChild(stdout); stdout.text = "aaa"; // ↓のコードはコンパイルエラー。 ["mii","tora","shiro"].forEach( function(item:*,i:int,arr:Array):void { stdout.text += item + "\n"; }); } } }
せっかくforEachが組み込みで用意されているのに、これは残念。何とかしてほしいところですな。なお、「()」をつければ動作するようになります。
(["mii","tora","shiro"]).forEach( function(item:*,i:int,arr:Array):void { stdout.text += item + "\n"; });