タグ

malaとnotice_commentに関するIMAKADOのブックマーク (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
    IMAKADO
    IMAKADO 2007/10/30
    nant_viさんのところでwithつかった方法も紹介されている。
  • 1