論理演算子

論理演算子

論理演算子では基本的に真偽(論理)値を用います。そのような値があると真偽値を返します。しかし、&& および || 演算子は実際には指定されたオペランドの一方の値を返します。そのため、非真偽値とともに論理演算子が使われると非真偽値を返します。論理演算子について次の表で説明します。

演算子 使用法 説明
&& expr1 && expr2 (論理 AND)expr1 を false と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、両オペランドが true の場合は && は true を返し、そうでない場合は false を返す。
|| expr1 || expr2 (論理 OR)expr1 を true と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、どちらかのオペランドが true の場合は || は true を返し、両方とも false の場合は false を返す。
! !expr (論理 NOT)オペランドを true と見ることができる場合は false を返す。そうでない場合は true を返す。

表 3.7:論理演算子

false と見ることができる式とは、null、0、空文字列 ("")、または undefined に評価される式のことです。

以下のコードで &&(論理 AND)演算子の例を示します。

a1=true && true       // t && t は true を返す
a2=true && false      // t && f は false を返す
a3=false && true      // f && t は false を返す
a4=false && (3 == 4)  // f && f は false を返す
a5="Cat" && "Dog"     // t && t は Dog を返す
a6=false && "Cat"     // f && t は false を返す
a7="Cat" && false     // t && f は false を返す

以下のコードで ||(論理 OR)演算子の例を示します。

o1=true || true       // t || t は true を返す
o2=false || true      // f || t は true を返す
o3=true || false      // t || f は true を返す
o4=false || (3 == 4)  // f || f は false を返す
o5="Cat" || "Dog"     // t || t は Cat を返す
o6=false || "Cat"     // f || t は Cat を返す
o7="Cat" || false     // t || f は Cat を返す

以下のコードで !(論理 NOT)演算子の例を示します。

n1=!true              // !t は false を返す
n2=!false             // !f は true を返す
n3=!"Cat"             // !t は false を返す

ショートサーキット評価

論理式は左から右に評価されるため、以下のルールを用いることで「ショートサーキット」評価ができるようになっています。

  • false && anything は false にショートサーキット評価する。
  • true || anything は true ショートサーキット評価する。

論理のルールはこれらの評価が常に正確であることを保証しています。上記の式の anything の部分は評価されないため、何らかの副作用が生じないように注意してください。

ドキュメントのタグと貢献者

 このページの貢献者: ethertank, happysadman, Mgjbot, Electrolysis
 最終更新者: ethertank,