时间:2021-07-01 10:21:17 帮助过:9人阅读
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