我有以下代码,并希望检查交换性质与不纯函数。有人能解释一下为什么前两个控制台日志打印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));
任何建议/解释都是值得感谢的。
对于前两个日志,您只调用了两次函数—在这些行中:
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