論理否定 (!)
論理否定 (!) 演算子 (論理反転、否定) は、真値を取ると偽値になり、その逆も同様です。これは通常 Boolean (論理型) の値に使用されます。論理型以外の値に使用した場合、単一のオペランドが true に変換できる場合は false を返し、それ以外は true を返します。
構文
!expr
解説
単一のオペランドが true に変換できる場合は false を返し、それ以外は true を返します。
ある値が true に変換できる場合、その値は真値 (truthy) と呼ばれます。ある値が false に変換できる場合、その値は偽値 (falsy) と呼ばれます。
false に変換することができる式の例を示します。
nullNaN0- 空文字列 (
""または''または``) undefined
! 演算子は論理値以外のオペランドに対して使用することができますが、返値が常に boolean プリミティブに変換することが可能であるため、論理演算子と見なすことができます。返値 (または一般的な式) を対応する論理値に明示的に変換するには、二重の否定演算子または Boolean コンストラクターを使用してください。
例
否定の使用
以下のコードは ! (論理否定) 演算子の例を示しています。
n1 = !true // !t returns false
n2 = !false // !f returns true
n3 = !'' // !f returns true
n4 = !'Cat' // !t returns false二重否定 (!!)
複数の否定演算子を連続して使用することで、明示的にあらゆる値を対応する論理型プリミティブに変換することができます。変換は値の「真値性」または「偽値性」に基づいて行われます (truthy および falsy を参照)。
同じ変換は Boolean 関数を通じて行うこともできます。
n1 = !!true // !!truthy returns true
n2 = !!{} // !!truthy returns true: any object is truthy...
n3 = !!(new Boolean(false)) // ...even Boolean objects with a false .valueOf()!
n4 = !!false // !!falsy returns false
n5 = !!"" // !!falsy returns false
n6 = !!Boolean(false) // !!falsy returns false否定同士の変換
以下の操作を論理値で行った場合、
!!bCondition常に以下のものと等しくなります。
bCondition仕様書
ブラウザーの互換性
BCD tables only load in the browser