我有一个getter / setter函数,它返回一个绝对值。所以我假设JavaScript允许我用它进行算术运算。但它只能以某种顺序运作......
注意: pos.get("log", pos.get("log") + 1)
始终在这些示例中返回1.
console.log("initial log: " + (-1 + pos.get("log", pos.get("log") + 1)));
// PSEUDO-CODE: -1 + (log += 1)
// RESULT: 0
上面的代码按预期工作。但是切换顺序并且它都会发生变化......尽管pos.get()总是返回相同类型的绝对值。 (数目)
console.log("initial log: " + (pos.get("log", pos.get("log") + 1) - 1));
// PSEUDO-CODE: (log += 1) - 1
// RESULT: 1
如果log从头开始等于0,则第一个console.log()打印0.然而,第二个打印1.我在控制台中没有任何错误。花了一些时间来弄清楚" - 1"只是被完全忽视了。
为什么吗
编辑:pos.get()的定义
get: function(str, val) {
switch(str) {
case "start": {
if(val != undefined) {
start = val;
}
return start;
}
case "log": {
if(val != undefined) {
log = val;
}
return log;
}
case "offset": {
if(val != undefined) {
offset = val;
}
return offset;
}
}
}
答案 0 :(得分:0)
确保您的函数返回一个数字(例如float),最后使用parseFloat()。现在,我认为js解析器不知道。
使用1 - yourFunction(),js解析器建议函数的返回值为数字。