3

JavaScript関数

function tile(u,v, a,b,c,d) {
  var c0 = tileCorners[a].eval(u,v);
  var c1 = tileCorners[b].eval(u-1,v);
  var c2 = tileCorners[c].eval(u,v-1);
  var c3 = tileCorners[d].eval(u-1,v-1);
  return c0 + c1 + c2 + c3;
}

と同等である必要があります

function tile(u,v, a,b,c,d) {
  return
    tileCorners[a].eval(u,v) +
    tileCorners[b].eval(u-1,v) +
    tileCorners[c].eval(u,v-1) +
    tileCorners[d].eval(u-1,v-1);
}

それでも、2番目の関数は常に戻りますundefined(デバッガーはへの呼び出しに「ステップイン」しませんeval)が、最初の関数は正しく動作します。eval間違った式に複数のメソッド呼び出しがあることについて何かありますか?

4

1 に答える 1

6

あなたはセミコロン挿入のルールの犠牲者です。

試す:

return tileCorners[a].eval(u,v) +
tileCorners[b].eval(u-1,v) +
tileCorners[c].eval(u,v-1) +
tileCorners[d].eval(u-1,v-1);

お使いのバージョンは次のものと同等です。

return;

tileCorners[a].eval(u,v) +
tileCorners[b].eval(u-1,v) +
tileCorners[c].eval(u,v-1) +
tileCorners[d].eval(u-1,v-1);
于 2012-05-25T21:41:35.460 に答える