提示:记录学习js的一次作业,本题考察的是函数参数默认值以及参数形成的作用域问题。
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
仔细阅读下面的代码,并写出两处的输出结果什么?以及详细分析为什么是这样的结果。
// 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)); //
// 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));
二、测试结果
第一个输出结果是12,第二个输出结果是21
可以看到第一个有默认值的情况arguments中的值并不是和a,b,c一样,改变arguments中的值也不会影响a,b,c的值
而第二个没有默认值的情况下,arguments中的值和a,b,c的值是一样的,并且改变arguments中的值也会改变a,b,c的值
函数参数设置了默认值,函数的参数就会形成一个单独的作用域。如果不设置默认值,函数参数就不会形成一个单独的作用域。