1、javascript中函数通过arguments对象获取实际参数值,不管是否定义了函数参数。如下图函数中,我们打印参数个数以及具体每个参数
2、arguments与函数参数之间是一一对应的关系,比如定义参数a,则参数可以通过a访问也可以通过arguments具体位置访问。但如果调用时未传入参数,则该对应关系不成立!如下图验证所示
3、既然arguments表示传入参数,当未传入参数时,arguments位置处值为undefined。所以如果是undefined,在函数中给参数默认赋值。
4、同样,我们也可以在函数中直接判断参数是否为undefined。如果为undefined则给一个默认值。js中通常使用或运算初始化默认值,这是因为或运算返回第一个为true的值,而不是返回布尔值。
5、js新特性中增加了真正的默认参数功能,在函数定义时给参数赋予默认值。这样调用时如果未传值,则使用默认值。即使给值传递undefined也会使用默认值。
6、默认参数是js中添加的新特性,而且js语言与其他语言不同的是灵活性非常大。js中的默认参数可以随意放置,而其他大部分语言中默认参数都只能定义在最后。js语言真的太崾栏毙庙灵活了,对开发人员来说是否是个好事呢?