すでに 4 回書き込む必要はありませんがtypeof
、とにかく;
条件ステートメントと演算子の強制パラダイム:
//TYPE //RESULT
Undefined // false
Null // false
Boolean // The result equals the input argument (no conversion).
Number // The result is false if the argument is +0, −0, or NaN; otherwise the result is true.
String // The result is false if the argument is the empty String (its length is zero); otherwise the result is true.
Object // true
モジラから:
論理積 ( &&
)
expr1 && expr2
最初のオペランド ( expr1
) が に変換できる場合false
、&&
演算子はfalse
の値ではなく戻り値を返しますexpr1
。
論理和 ( ||
)
式1 || expr2
に変換できるかどうかを返します。それ以外の場合は を返します。したがって、ブール値で使用すると、いずれかのオペランドが;の場合に true を返します。両方が の場合、 を返します。expr1
true
expr2
||
true
false
false
true || false // returns true
true || true // returns true
false || true // returns true
false || false // returns false
"Cat" || "Dog" // returns Cat
false || "Cat" // returns Cat
"Cat" || false // returns Cat
true && false // returns false
true && true // returns true
false && true // returns false
false && false // returns false
"Cat" && "Dog" // returns Dog
false && "Cat" // returns false
"Cat" && false // returns false
さらに、PHP と同じようにショートカットisset()
メソッドを使用して、オブジェクトを適切に検証できます。
function isSet(value) {
return typeof(value) !== 'undefined' && value != null;
}
そう; あなたのコードは次のようになります。
var result1 = hitTest(player, object1),
result2 = hitTest(player, object2);
if ( isSet(result1) && isSet(result2) ) { blabla(); };