1

JavaScript で複数のオプション引数を使用できますか

1 つが必須で 2 つがオプションの 3 つの引数を取る関数 dog があるとします。

dog(dogsName, [tripsOutOfTheCountry], [numberOfDoctorsVisits])

未定義をチェックできることは知っていますが、オプションであり、numberOfDoctorsVisits と思われるものを提供するだけであるため、その人が tripsOutOfTheCountry を提供しない場合はどうなりますか。

実行例:

dog("Rusty", 10)

numberofDoctorsVisits に 10 を入力し、tripsOutOfTheCountry はオプションであるため空白のままにします。

したがって、実際にはプログラムは tripsOutOfTheCountry を 10 として表示します。これは実際には numberofDoctorsVisits です。

これを回避する方法はありますか。ユーザーが tripsOutOfTheCountry に 0 を入力する以外に、これを回避する方法はないと思います。

上記の例を次のように変更するとdog("Rusty, 0, 10)

可能かどうかわからないので質問させていただきます。

PS陳腐な例でごめんなさい

4

1 に答える 1

2

これは、呼び出し時の名前付き引数をサポートせず、引数を位置的に渡すだけの言語で同じ問題です。各引数を識別するための明確なルールを作成できれば、何が何であるかを手動で把握できる可能性があります。たとえば、引数に数値や関数などの異なる型がある場合、何が割り当てられているかをテストし、予想される型と順序に基づいて物事をシフトできます。柔軟な API を公開したい多くのライブラリはこれを行っています。たとえば、この jQuery メソッドが許可するバリエーションを見てください。これはすべてあなた次第ですが、Javascript はこれについてはまったく役に立ちません。

代わりにこれを行う通常の方法は、明示的な名前でオブジェクトを渡すことです。

dog({ name: 'Rusty', numberOfDoctorsVisits: 10 })
于 2015-12-18T16:36:23.090 に答える