es5 要实现默认参数,一般是
在大括号里 写,
function calc(x, y) {
x = x || 0;
y = y || 0;
// to do with x, y
// return x/y
}
es6后,直接用语言本身来处理, 写在小括号里
function calc(x=0, y=0) {
console.log(x,y)
}
默认参数可以不是一个值类型,它可以是一个函数调用
function throwIf() {
throw new Error('少传了参数');
}
function ajax(url=throwIf(), async=true, success) {
return url;
}
ajax(); // 没有传url,则使用默认参数 throwIf() 返回Error: 少传了参数
=============================================================
定义了默认参数,函数的length属性会减少,即有默认参数不包含在length的计算当中
function calc(x=0, y=0) {
console.log(x, y)
}
function ajax(url, async=true, dataType="JSON") {
console.log(url, async, dataType)
}
console.log(calc.length); // 0 x,y 2个都有默认参数,不参与计算
console.log(ajax.length); // 1
function.length和 arguments的区别:
function.length:计算形参的长度
arguments:计算实参的长度