0

デフォルトのパラメータ値が取得されるように、パラメータにnullを渡したい関数がありますが、null、undefined、またはNaNが好きではないようです。

これが私の関数です:

function myFunction(value:Number = .5, value2:Number = .6):Number {
   return value;
}

そして後で:

var result = myFunction(null, 10);
trace(result); // 0

var result = myFunction(NaN, 10);
trace(result); // NaN

var result = myFunction(undefined, 10);
trace(result); // NaN

デフォルトで.5にするにはどうすればよいですか?

4

3 に答える 3

2

パラメータを渡さずに関数を呼び出す場合は、期待どおりにデフォルト値を取得する必要があります。この例では、デフォルト値は、値がまったく渡されない場合にのみ使用されます。

function myFunction(value:Number = .5, value2:Number = .6):Number {
   return value;
}

var result = myFunction();
trace( result ) // 0.5

最初のパラメーターではなく2番目のパラメーターを渡したい場合は、別のアプローチを検討する必要があります。

AS3で「Number」と入力された変数の値をnullにすることはできず、自動的にNaNに変換されます。

于 2012-10-10T07:24:55.837 に答える
1

基本的に、あなたがしているのは関数のオーバーロードであり、それはAS3ではサポートされていません。
ただし、ワイルドカードタイプを使用すると、オーバーロードを模倣できます。

function myFunction(value:*= .5, value2:Number = .6):Number {
   return value;
}

ただし、デフォルト値はおそらく割り当てられない/アクセスできません。
ただし、コードの臭いが全体に書かれているため、これを再設計することを強くお勧めします。後で戻ってきて、あなたを悩ませます。

于 2012-10-10T13:08:34.587 に答える
-1
function myFunction(value:Number = .5, value2:Number = .6):Number
{
    if (isNaN(value)) value = .5;
    return value;
}

var result = myFunction(NaN,10);
trace(result); //0.5

正確に何をしようとしていますか?確かに、より良いアプローチが必要です。

于 2012-10-09T23:56:42.637 に答える