记录一道笔试题
function side(arr) { arr[0] = arr[2]; } function func1(a, b, c = 3) { c = 10; side(arguments); console.log(a + b + c); } function func2(a, b, c) { c = 10; side(arguments); console.log(a + b + c); } func1(1, 1, 1); // 12 a:1, b:1, c:1 func2(1, 1, 1); // 21 a:10, b:1, c:10
原因在于 func1
给了 c
默认值,进入了严格模式,而严格模式下实参和 arguments
是不会共享的。
参考资料