老师你好。
在刷面试题的时候,遇到一个函数默认参数的问题,没想明白。所以想过来问一下。
因为不是课程里包含的内容,所以不太好意思…但还是希望老师解答一下,感谢。。
题目如下:想问一下产生这种结果的原因。
// c有默认值的情况
function side1(arr) {
arr[0] = arr[2];
}
function a(a, b, c = 3) {
c = 10;
side1(arguments);
return a + b + c;
}
console.log(a(1, 1, 1)); // 12
// c没有默认值的情况
function side2(arr) {
arr[0] = arr[2];
}
function b(a, b, c) {
c = 10;
side2(arguments);
return a + b + c;
}
console.log(b(1, 1, 1)); // 21
网上的解答是:因为 a 函数加了默认值,就按 ES 的方式解析,ES6 是有块级作用域的,所以 c 的值是不会改变的。
但还是没明白…
辛苦了。
前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法
了解课程