0

我有以下代码,想用不纯函数检查交换属性。谁能解释为什么前两个控制台日志打印 3、3 以及为什么直接函数调用打印 3 和 -3?

var multi = 1;
const f = x =>{
    multi = -multi;
    return x * multi;
}

let a = f(2);
let b = f(5);
console.log("a+b:: ",a+b);
console.log("a+b:: ",b+a);
console.log("a+b:: ",f(2) + f(5));
console.log("a+b:: ",f(5) + f(2));

任何建议/解释表示赞赏。

4

1 回答 1

0

对于前两个日志,您只调用了两次函数 - 在这些行中:

let a = f(2);
let b = f(5);

之后,a不要b改变。5 + -3 与 -3 + 5 相同。

对于最后两条日志,您调用了四次函数,并且每次调用函数时符号都会反转,从而导致

f(2) + f(5) // -2 + 5
f(5) + f(2) // -5 + 2
于 2021-08-20T05:55:55.493 回答