为什么调用y的时候,x的值没有改变
function f1(
x,
y = function () {
x = 2;
}
) {
console.log(x); //5
y();
console.log(x); //5
var x = 3;
console.log(x); //3
y();
console.log(x); //3
}
f1(5);
当函数中没有声明x的时候,调用y,x就改变了
function f2(
x,
y = function () {
x = 2;
}
) {
console.log(x); //5
y();
console.log(x); //2
}
f2(5);
因为你用了
var
声明变量。而
var
是会提升声明(注意是提升声明不是提升初始化)的。实践中尽量避免使用
var
,建议使用let。