0

良い一日を。

この問題があります。いくつかのオプションの引数を JavaScript 関数に渡す方法を提供する必要があります。これは非常に簡単です。すべての引数をオブジェクトにすることにしたので、関数を呼び出す必要がある人は誰でも引数の名前を指定する必要があります。しかし、ほとんどの場合、エディターは空の引数を省略せずに、引数オブジェクト全体で関数を呼び出すだけです。これは、引数が別の方法でページに渡されるためです (クエリ文字列で言いましょうが、それは問題ではありません)。

これが関数の作成方法です。

function playAnimation(options) {
var timeOutAnimation = options.animationDuration || 15;
var backgroundColor = options.color ; // this argument will be always present, so no default.
//more code...
}

これが呼び出しです(例としてphpコードを使用しています)

$(document).ready(function(){
    var opt = {
        animationDuration: '<?php echo $_GET['stopAnimationAfter'] ?>', //could be a number, or nothing.
            color: 'black'
        }
    playAnimation(opt);     
});

問題は、引数が渡され、デフォルト値に決して当てはまらないことです。関数が呼び出される方法を変更することはできません (つまり、「get」パラメーターの可用性をチェックし、それに応じて関数呼び出しを作成します。JavaScript 内の引数をテストする方法を見つける必要があります。

options.animationDuration === "undefined" (動作しない) などの安全な方法はありますか?

解決策: 呼び出しの各引数を ' ' で囲むと、それに応じて引数がいっぱいになるか空になります。そして、私はそれらをテストできます。

4

1 に答える 1

1

以下を使用できます。

function playAnimation(options) {
    options = options || {}
    var timeOutAnimation = options.animationDuration || 15;
    var color = options.color;
}

存在しない場合、空のオブジェクトにオプションを設定します。必要に応じて、次のように undefined を確認することもできます。

if(typeof options === "undefined") {
    // options not passed
}

これは、実証するフィドルです。

于 2013-11-07T08:20:11.310 に答える