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在表达式中有多个方法调用是否有问题?
你是分号插入规则的受害者.
尝试:
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)