(FunctionReturn() - 1)失败但(-1 + FunctionReturn())成功了?

时间:2015-07-29 20:44:47

标签: javascript function internet-explorer-11 operator-precedence

我有一个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;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

确保您的函数返回一个数字(例如float),最后使用parseFloat()。现在,我认为js解析器不知道。

使用1 - yourFunction(),js解析器建议函数的返回值为数字。