10

私は多くのフロントエンド開発を行っており、これを頻繁に行っていると思います。

function doSomething(arg){
    var int = arg ? arg : 400
    //some code after
}

だから私はこれを行う方法であるかどうか疑問に思っていましたが、より短くてきれいです(同じ行に2回表示されるのは好きではありませんarg).

私は何人かの人々がそのようなことをしているのを見てきました:

var int = arg || 400;

そして、どの順序で値を配置する必要があるのか​​わからないので、 と を試しarg || 400ましたが、が未定義であっても、400 || arg常にint右側の値に設定されます。arg

PHPfunction doSomething(arg = 400)でデフォルト値を設定したり、jQueryプラグインで.extend()デフォルトプロパティを使用したりできることは知っていますが、単一の変数で簡単な方法はありますか? それとも、私のやり方を使い続けなければなりませんか?

助けていただきありがとうございます。リソースを提供していただければ幸いです。

4

6 に答える 6

15

これよりも短いきれいな方法は本当にありません

var int = arg || 400;

0実際、 arg を, falseorとして渡せるようにしたい場合、正しい方法は長くなります"":

var int = arg===undefined ? 400 : arg;

新しい変数を宣言するのではなく、元の変数を使用することで、わずかな改善が頻繁に行われます。

if (arg===undefined) arg=400;
于 2013-05-22T16:12:00.997 に答える
0

私はチェックしarguments.lengthます:

var f = function(arg) {
  var myArg = arguments.length > 0 ? arg : 400;
};
于 2015-02-11T14:49:45.350 に答える
0

ソリューションの問題は、false と評価される値 (「false」または「0」など) もデフォルト値をトリガーすることです。したがって、false と評価される値を持つ可能性のあるすべてのパラメーターについて、「未定義」を明示的にチェックする必要があります。

var int = (typeof x === 'undefined') ? default : x

これが不可能な場合は、使用できます

var int = x ? x : default
OR
var int = x || default

別のオプションは、引数配列を使用して、パラメーターが指定されているかどうかを確認することです。ただし、これは、オプションのパラメーターが最後のパラメーターである場合にのみ使用できます。

function test(x, y) {
    var int1 = (arguments.length > 0) ? x : default;
    var int2 = (arguments.length > 1) ? y : default;
}
于 2013-05-22T16:15:42.043 に答える
0

質問とは直接関係ありませんが、引数をミラーリングするために新しい変数を作成するのはなぜですか?

この状況では、次を使用します。

!arg && (arg = 400);

ただし、これは、値、、、およびがすべてに設定されることargを意味する虚偽をテストします。これが望ましい結果でない場合、おそらく の値は有効な値であり、通常は次のようにテストします。false0''nullundefinedarg4000argargument.length

function f (arg) {
  !arguments.length && (arg = 400);

これは、値が渡されたかどうをチェックargし、呼び出しで引数がまったく指定されていない場合にのみ設定します。

0が目的の値ではない特定のインスタンスのみが構成を使用します

 arg || 400

再び偽りのテストに苦しむ

数値であることが重要な場合は、arg次を使用できます。

 typeof arg !== 'number' && (arg = 400);

argこれにより、それが数値であり、コードの残りの部分であることが保証されます。

結論として、引数をどのように使用するか、どの値が有効か、コードの呼び出し元をどれだけ信頼するかによって異なります。

于 2013-05-22T16:49:39.523 に答える