私はas3でかなり新しく、私はダブレットが付いています。diff ifステートメント
public function get products(a:Object){
if(a){
// smtg
}
if(null!=a){
// smtg
}
}
私はas3でかなり新しく、私はダブレットが付いています。diff ifステートメント
public function get products(a:Object){
if(a){
// smtg
}
if(null!=a){
// smtg
}
}
いいえ、それらは同じではありません。彼らは多くの場合同様の動作をしますが、最初のメソッドは値を評価し、2番目のメソッドは値がnullでないかどうかをチェックするという大きな違いがあります。
あなたはこの例で違いを見ることができます:
function test (a:Object):void
{
if (a)
trace("A");
if (a != null)
trace("B");
}
test(false); // B
test(""); // B
test(0); // B
test(true); // A & B
// ...
偽に評価されたすべての値が異なる結果を生成します。
本当にクール,,,! –
+1レッスンに感謝します。知っておいてよかった。 – TheDarkIn1978
オブジェクトがa
であることはnullでなくてもよいが、false
なので、if (a)
とif(a != null)
は異なる結果をもたらす可能性があることに注意してください。
if (a)
は、if (a != null)
とは異なります。
後者は、a
とnull
の間の同等性のみをチェックします。前者はa
をBoolean
に変換し、結果がtrue
であるかどうかを確認します。
前者は基本的に次のとおりです。
if (Boolean(a))
...
a
がBoolean
に変換されたときに何が起こるa
の種類によって異なります。あなたが(「ブールへのキャスト」を参照)、ここでのルールを見つけることができます:私のテストでは
私はa
がオブジェクトである場合でも、if (a)
が倍の速度としてif (a != null)
であることを発見したと文字列や数字ではありません。
あなたは同じことをするかどうか質問ですか?なぜ彼らは同じことをしますか? – Taurayi
彼らは同じ比較をしますか? –