课程名称:再学JavaScript ES(6-10)全版本语法大全
课程章节:2-18 Default Parameters(函数参数的默认值)
课程讲师:快乐动起来呀
课程内容:
ES5中使用arguments来获取函数调用时传入的参数,但是ES6中禁止使用arguments。
函数参数默认值
如果形参的个数多余实参,不设置参数默认值则等于undefined;
function f(x, y, z) {
if (y === undefined) {
y = 7
}
if (z === undefined) {
z = 42
}
return x + y + z
}
console.log(f(1))
ES6做法:
//ES6 函数参数的默认值的处理
function f(x, y=7, z=x+y) {
console.log(Array.from(arguments)); //可以获取实参的个数,但是es6中不允许使用arguments对象了
console.log(f.length); //通过f.length可以获取形参无默认值的参数个数,而不是实参个数
return x + y + z
}
console.log(f(1,undefined,20)) //传undefined 可以看作是优先默认值,底层做了类似ES5之前的做法
注意点:1.如果中间位置的实参不传,使用undefiend占位;2.带有默认值的参数往后写;3.参数默认值可以是常量,还可以是表达式
课程收获:
ES5和ES6的结合中可以用Array.from(arguments),去获取执行时候传入了几个参数
如果直接用f.length,只能判断定义函数的参数有几个,但是不知道他的默认值参数有几个,更不知道实际参数有几个参数