4

私はこれについてここでいくつかの質問を読みました:

  1. これはいい

    function(a, b) {
        a = (typeof a === 'undefined')? 'default_val' : a;
        b = (typeof b === 'undefined')? 'default_val' : b;
    }
    
  2. これはやや面倒です(ブール値以外で機能します)

    function(a, b) {
        a = a || 'default_val';
        b = b || 'default_val';
    }
    

    false を渡すと、ロジックが壊れます。したがって、これは悪い習慣としてマークする必要があります

  3. いくつかの質問がありましたが、私はこれに対する答えを見たことがありません (誰も質問に直接答えませんでした): これ (最後の方法) は良いですか (誰か問題を見ていますか) ?

    function(a = 'default_val', b = 'default_val') {
        // your code
    }
    

この 3 番目の方法をテストしましたが、問題は見つかりませんでした。最後の方法でお願いします。よりクリーンで、他の言語の構造に似ています。

ありがとう

4

2 に答える 2

2

現在の ECMAScript の実装では、3 のようにする方法はありません。「Harmony」と呼ばれる次の実装で提案されています。詳細はこちら http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values

また、実際にどのようにやっているのかも頭に浮かびました。通常、引数をオブジェクトとして渡します。たとえば、

変数オプション = { x : 20, y : 30 }

それから私は関数でやっています

function iAcceptDefaults(options) {
    var defaults = {
        x: 40 
    }
    var newParameters = $.extend({},options, defaults) // here we using jQuery method extend to mix defaults parameters with options

}
于 2012-10-16T07:48:25.357 に答える
1

3 番目の例は、最新のブラウザーのほとんどで構文的に正しくありません。現在、この構文はまだ承認されていないECMAScript Harmony 標準の一部であるため、FireFox でのみ機能します (これは修正された問題です) 。

于 2012-10-16T07:52:19.083 に答える