1、具有默认值的参数,要放在列表最后
function add(x = 1, y) { // 报错 Uncaught SyntaxError: Unexpected token ';'
return x + y;
}
正确写法:
function add(x, y = 1) {
return x + y;
}
2、跳过参数且保留默认值时,可以传undefind
function add(x, y = 2, z = 3) {
return x + y + z;
}
add(1, undefined, 5); // NaN还是8?结果是8
add(1, undefined); // 6
3、跳过参数且不保留默认值时,可以传null(只针对数值型参数:因为null与数值进行计算时,通常隐式转换为0了)
function add(x, y = 2, z = 3) {
return x + y + z;
}
add(1, null, 5); // 6
add(1, null); // 4
4、参数可以是表达式
function add(x, y = 2, z = x + y) {
return x + y + z;
}
add(1, undefined); // 6
add(1, 20, undefined); // 42
5、参数可以是函数表达式
function add(x = function() {return y + z}, y = 2, z = 3) {
return x() + y + z;
}
add(); // 10
add(undefined, 20); // 46
6、函数的length属性值:等于非默认值参数的个数;
function add(x, y = 2, z = x + y) {
return x + y + z;
}
add(1, undefined);
console.log(add.length) // 1
add(1, 20, undefined);
console.log(add.length) // 2
7、arguments的length属性值:等于传入参数的个数,包括undefined
function add(x, y = 2, z = x + y) {
console.log(arguments.length)
}
add(1, undefined); // 2
add(1, 20, undefined); // 3