タグ

ブックマーク / ma2.hatenadiary.com (1)

  • Functionオブジェクト - ma2’s diary

    Javascriptを勉強中なのですが,Functionオブジェクトで疑問が。 f = {foo: function(a){print a}};こんな感じで無名の関数オブジェクトを作れます。f.foo(10)とすれば10がプリントされます。こんな関数オブジェクトを少しずつパラメータを変えてたくさん作ろうと思いました。ところが for (i=0; i<10; i++) { f = {foo: function(a){print a+i}}; }とやると,「print a+i」は関数評価時まで評価されないので,ループ中の値に関係なく,関数評価時のスコープにある"i"を探して値がセットされてしまいます。当は「function(a){print a+0}」から「function(a){print a+9}」までの関数を作りたいのです。どうすればいいのでしょう?

    Functionオブジェクト - ma2’s diary
  • 1