首先是ES6代码
var x = 1;
function foo(x, y = function() { x = 2; }) {
var x = 3;
y();
console.log(x);
}
foo();
上述代码在chrome运行 打印的是3.
此段ES6代码编译成ES5时,如下图所示
var x = 1;
function foo(x) {
var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
x = 2;
};
var x = 3;
y();
console.log(x);
}
foo();
此段ES5代码执行后 打印的是2
为什么会不一样呢 求教。
关键在于函数默认参数的作用域:
https://www.jianshu.com/p/8fe...