# Logical NOT Operator (!) (JavaScript)

Performs logical negation on an expression.

result = !expression

The following table illustrates how *result* is determined.

If expression is | Then result is |
---|---|

True | False |

False | True |

All unary operators, such as the **!** operator, evaluate expressions as follows:

If applied to undefined or null expressions, a run-time error is raised.

Objects are converted to strings.

Strings are converted to numbers if possible. If not, a run-time error is raised.

Boolean values are treated as numbers (0 if false, 1 if true).

The operator is applied to the resulting number.

For the **!** operator, if *expression* is nonzero, *result* is zero. If *expression* is zero, *result* is 1.

Supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards, Internet Explorer 8 standards, Internet Explorer 9 standards. See Version Information.