jsパラメータオブジェクト実装オプションパラメータとパラメータのデフォルト値

1413 ワード

js は、オプションパラメータとパラメータのデフォルト値を実現する.
パラメータを省略する前提は、関数があなたがどのパラメータを入力したいのかを識別することです.1.省略できるパラメータは後に置く2.パラメータを省略した後、他の関数と二義性を生成することはできません.(jsはこの問題は存在しません)
プログラムはパラメータの定義された順序でパラメータを伝達するように要求されます. が伝えられていない場合は省略されます.中間を省略するなら…すみません、null undefinedに自分で入ってきます.
javascriptについては、中間パラメータを省略する効果を達成するために、パラメータタイプを簡単に判断して識別することができる.
    var set = function(name, date, age) {
    if (typeof date === "number") {
        age = date;
        date = undefined;
    }
    // ....
}
ここはシンプルなタイプで認識されています.もっと複雑な場合は正規表現を使ってdomain、url、emailなどを識別できますが、話をするとややこしくなります.コードロジックも複雑で、書きにくいです.
パラメータが多く、部分が省略できる場合はパラメータオブジェクトの使用を推奨します.
ES 5オプションパラメータオブジェクトの実現
    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")
    });
ES 6は、任意のパラメータオブジェクトを実現する.構文糖 .
    function doSome({a,b=2,c}){
    console.log(a,b,c)
    }
    doSome({a:5,c:22})
    // 5 2 22