js参数对象
实现可选参数和参数默认值
省略参数的前提是函数能识别你到底想传入的是哪一个参数,约定
1.可省略的参数后置
2.省略参数后不能与其它函数产生二义性 (js不存在这个问题)
程序要求你按参数定义的顺序传递参数进去。如果后面
有没传的,就省略了。如果要省略中间的……对不起,自己传入 null 或 undefined
。
对于 javascript 来说,可以对参数类型进行简单的判断来进行识别,以达到省略中间参数的效果,比如。
var set = function(name, date, age) {
if (typeof date === "number") {
age = date;
date = undefined;
}
// ....
}
这里是简单通过类型来识别的。更复杂一些的情况可以使用正则表达式来识别 domain, url, email 等,不过说起来就比较麻烦了,而且代码逻辑复杂,也不易写。
参数较多,部分可以省略的情况,建议使用参数对象。
ES5实现可选参数对象
var CookieUtil = {
set: function(args) {
var name = args.name;
var value = args.value;
var expires = args.expires;
var path = args.path;
var domain = args.domain;
var secure = args.secure;
// ...
}
}
CookieUtil.set({
name: "name",
value: "Nicholas",
path: "/books/projs/",
domain: "www.wrox.com",
expires: new Date("January 1, 2010")
});
ES6实现可选参数对象-语法糖解构赋值
function doSome({a,b=2,c}){
console.log(a,b,c)
}
doSome({a:5,c:22})
// 5 2 22
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。