Using ! and !! in Javascript

By: Syed Fazal Viewed: 153259 times  Printer Friendly Format    


The logical NOT operator in JavaScript is the same as in C and Java, indicated by an exclamation point ( ! ). Unlike logical OR and logical AND operators, the logical NOT always returns a Boolean value.

The logical NOT operator behaves in the following way:

  • If the operand is an object, false is returned.
  • If the operand is the number 0, true is returned.
  • If the operand is any number other than 0, false is returned.
  • If the operand is null , true is returned.
  • If the operand is NaN , true is returned.
  • If the operand is undefined , an error occurs.

This operator is typically used in control loops (discussed later):

var bFound = false;
var i = 0;
while (!bFound) {

if (aValues[i] == vSearchValue) {
    bFound = true;
} else {
    i++;
}

}

In this example, a Boolean variable ( found ) keeps track of the success of a search. When the item in question is located, found is set to true , which causes !found to equal false , meaning that execution will escape the while loop.

The logical NOT operator is also useful in determining the Boolean equivalent of an JavaScript variable. In order to do this, you use two logical NOT operators in a row. The first NOT returns a Boolean value no matter what operand it is given. The second NOT negates that Boolean value and so gives the true Boolean value of a variable.

var bFalse = false;
var sBlue = “blue”;
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;

document.write(“The Boolean value of bFalse is “ + (!!bFalse));
document.write(“<br />The Boolean value of sBlue is “ + (!!sBlue));
document.write(“<br />The Boolean value of iZero is “ + (!!iZero));
document.write(“<br />The Boolean value of iThreeFourFive is “ + (!!iThreeFourFive));
document.write(“<br />The Boolean value of oObject is “ + (!!oObject));

Running this example yields the following output:

The Boolean value of bFalse is false

The Boolean value of sBlue is true

The Boolean value of iZero is false

The Boolean value of iThreeFourFive is true

The Boolean value of oObject is true



Most Viewed Articles (in Javascript )

Latest Articles (in Javascript)

Comment on this tutorial