函数调用的JavaScript交换行为.需要一些线索来告诉我们幕后到底发生了什么



我有以下代码,并希望检查交换性质与不纯函数。有人能解释一下为什么前两个控制台日志打印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);

之后,ab不发生变化。5 + -3等于-3 + 5。

对于最后两个日志,您调用了四次函数,每次调用函数时,符号反转,结果为

f(2) + f(5) // -2 + 5
f(5) + f(2) // -5 + 2

相关内容

最新更新