在表达式中未调用多个javascript方法调用

wco*_*ran 3 javascript

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;
}
Run Code Online (Sandbox Code Playgroud)

应该相当于

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);
}
Run Code Online (Sandbox Code Playgroud)

但第二个函数总是返回undefined(调试器不会"进入"调用eval),而第一个函数表现正常.eval在表达式中有多个方法调用是否有问题?

Poi*_*nty 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);
Run Code Online (Sandbox Code Playgroud)

您的版本相当于:

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);
Run Code Online (Sandbox Code Playgroud)