演算子 | 説明 |
---|---|
expr1 && expr2 | (論理 AND) expr1 と expr2 が両方とも true の場合に true を返します。 |
expr1 || expr2 | (論理 OR) expr1 または expr2 のいずれかが true か、両方とも true の場合に、true を返します。 |
! expr1 | (論理 NOT) expr1 が false の場合に true を返し、それ以外の場合は false を返します。 |
false に変換できる式としては、例えば、NULL、0、空ストリング (??????)、undefined に評価する式があります。 && と || 演算子は、ブール値以外のオペランドに対して使用できますが、その戻り値は常にブール値に変換できるため、これらの演算子はブール演算子とみなすことができます。
function p(stuff) {
print("<<<" + stuff + ">>>");
}
var a = true;
var b = false;
var n0 = 0;
var n1 = 1;
var nm1 = -1;
var x0 = 0.0;
var x1 = 1.1;
var s0 = "";
var s1 = "foo";
var sn = null;
// How different types are treated as boolean
if(a) p("a is true"); else p("a is false"); // true
if(b) p("b is true"); else p("b is false"); // false
if(n0) p("n0 is true"); else p("n0 is false"); // false
if(n1) p("n1 is true"); else p("n1 is false"); // true
if(nm1) p("nm1 is true"); else p("nm1 is false"); // true
if(x0) p("x0 is true"); else p("x0 is false"); // false
if(x1) p("x1 is true"); else p("x1 is false"); // true
if(s0) p("s0 is true"); else p("s0 is false"); // false
if(s1) p("s1 is true"); else p("s1 is false"); // true
if(sn) p("sn is true"); else p("sn is false"); // false
// Using logical values as operands
p("a && a = " + (a && a)); // true
p("a && b = " + (a && b)); // false
p("b && b = " + (b && b)); // false
p("b && a = " + (b && a)); // false
p("a || a = " + (a || a)); // true
p("a || b = " + (a || b)); // true
p("b || b = " + (b || b)); // false
p("b || a = " + (b || a)); // true
p("!a = " + (!a)); // false
p("!b = " + (!b)); // true
// Using non-logical values as operands
p("n1 && n1 = " + (n1 && n1)); // true
p("n1 && n0 = " + (n1 && n0)); // false
p("n0 && n0 = " + (n0 && n0)); // false
p("n0 && n1 = " + (n0 && n1)); // false
p("n1 || n1 = " + (n1 || n1)); // true
p("n1 || n0 = " + (n1 || n0)); // true
p("n0 || n0 = " + (n0 || n0)); // false
p("n0 || n1 = " + (n0 || n1)); // true
p("!n1 = " + (!n1)); // false
p("!n0 = " + (!n0)); // true