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