return !1 in javascript

This seems to be a particularly silly way of returning true or false


In immediate response to your question:

  • return !1 is equivalent to return false
  • return !0 is equivalent to return true

In the specification - 11.4.9 Logical NOT Operator - it states that when you place an exclamation mark ! in front, the result is evaluated as Boolean and the opposite is returned.

Example:

var a = 1, b = 0;
var c = a || b;
alert("c = " + c + " " + typeof c); // here typeof c will be "number"

a = !0, b = !1;
c = a || b;
alert("c = " + c + " " + typeof c); // here typeof c will be "boolean"

I mostly see this in a code passed through Google's JS optimiser. I think it is mostly done to achieve shortness of the code.

It is often used when a strictly Boolean result is needed - you may see something like !!(expression). Search in jQuery, for example.