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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM