函数的扩展---函数参数默认值得位置
2018-03-08 15:47
387 查看
通常情况下,定义了默认值的参数,应该是函数的尾参数。因为这样比较容易看出来,到底省略了哪些参数。如果非尾部的参数设置默认值,实际上这个参数是没法省略的。// 例一
function f(x = 1, y) {
return [x, y];
}
f() // [1, undefined]
f(2) // [2, undefined])
f(, 1) // 报错
f(undefined, 1) // [1, 1]
// 例二
function f(x, y = 5, z) {
return [x, y, z];
}
f() // [undefined, 5, undefined]
f(1) // [1, 5, undefined]
f(1, ,2) // 报错
f(1, undefined, 2) // [1, 5, 2]上面代码中,有默认值的参数都不是尾参数。这时,无法只省略该参数,而不省略它后面的参数,除非显式输入
如果传入
function foo(x = 5, y = 6) {
console.log(x, y);
}
foo(undefined, null)
// 5 null
function f(x = 1, y) {
return [x, y];
}
f() // [1, undefined]
f(2) // [2, undefined])
f(, 1) // 报错
f(undefined, 1) // [1, 1]
// 例二
function f(x, y = 5, z) {
return [x, y, z];
}
f() // [undefined, 5, undefined]
f(1) // [1, 5, undefined]
f(1, ,2) // 报错
f(1, undefined, 2) // [1, 5, 2]上面代码中,有默认值的参数都不是尾参数。这时,无法只省略该参数,而不省略它后面的参数,除非显式输入
undefined。
如果传入
undefined,将触发该参数等于默认值,
null则没有这个效果。
function foo(x = 5, y = 6) {
console.log(x, y);
}
foo(undefined, null)
// 5 null
相关文章推荐
- delphi内嵌汇编函数参数默认保存位置
- ES6学习总结之函数变化(函数默认参数,扩展运算符,箭头函数)
- 函数声明和函数定义中的默认参数浅析
- C++那些细节--函数的默认参数
- 智能指针变量做函数参数的一个值得注意的地方
- 给jquery扩展一个获取url参数的函数(url传参不可带空格)
- 第37条:避免对函数中继承得来的默认参数值进行重定义
- C++函数重载遇到了函数默认参数情况
- C/C++ Python的函数默认参数
- php扩展开发:编写一个传递引用参数的函数
- 虚函数的默认参数问题
- 默认参数提升在可变参数函数的陷阱
- python 函数默认参数的小坑
- Python 函数的关键字参数和位置参数
- Linux--位置参数,参数移位,随机数,数組,函数,函数递归
- js中对函数设置默认参数值的3种方法
- Python进阶-函数默认参数
- 静态成员函数如何调用非静态成员变量(函数参数不能任意扩展的情况)
- 函数的默认参数
- [C++基础]006_函数默认参数