【发布时间】:2015-11-12 13:01:56
【问题描述】:
这是 Sheets 文档的脚本,其中 who[] 是 char 数组,what[] 是 int 数组,两者均取自 R1C1 输入。出于某种原因, d+what[i] 连接了 d 和 what[i] 的先前值(作为字符串 - 意外行为),但 d-what[i] 按预期执行整数减法。我已经通过替换 d-what[i]*(-1) 确认这是错误,从而消除了怪异。
function compareExpenses(who, what) {
var d = 0;
// var who = ['T','D','T'];
// var what = [15,10,5];
for (var i=0; i < what.length; i++) {
if (who[i] == 'T') {
d = d+what[i];
} else {
d = d-what[i];
}
}
return d/2;
}
如果不清楚:对于代码中的示例输入,每次迭代后 d 的值是:'015', 5, '55'。此表上不存在其他代码。我不知道的幕后发生的事情会导致 + 以这种方式超载吗?
【问题讨论】:
-
使用脚本调试器进行单步调查。一定是您的输入不是您在代码 cmets 中放置的内容。
-
你可以使用
Number(d) + what[i]的演员表吗?
标签: google-apps-script operator-overloading