One thing that I always took for granted until last week was testing for negative numbers. What I mean is that I had no clue that `-0` is actually different from `0`. Interestingly enough when using strict equality to test the two values they still appear to be equal but they are in fact different. For this reason, I decided to write the following function:

```function isNegative(n) {
return ((n = +n) || 1 / n) < 0;
}
&#91;/code&#93;

I admit that this function probably isn't that useful because I haven't thought of one time when you really need to know if a value is <code>-0</code> or <code>0</code>, but just in case I or anyone else in the future does need a way to differentiate, the above function should do the trick.  The following are some examples of calling the function:

var a = isNegative(-Infinity); // true
var b = isNegative(-12);       // true
var c = isNegative(-0);        // true
var d = isNegative(0);         // false
var e = isNegative(34);        // false
var f = isNegative(Infinity);  // false
var g = isNegative("Hello");   // NaN -> false
var h = isNegative(undefined); // NaN -> false
var i = isNegative(null);      // 0 -> false
var j = isNegative(-null);     // -0 -> true
var k = isNegative("-5");      // -5 -> true
var l = isNegative("-0");      // -0 -> true
var m = isNegative("0");      // 0 -> false
var n = isNegative("6");      // 6 -> false
var o = isNegative("");      // 0 -> false
```

I'm guessing this is more than you ever wanted to know about negative numbers so I will end the post here. ðŸ˜Ž

Categories: BlogJavaScriptJScript

#### roelof berkepeis · February 25, 2014 at 9:41 PM

nice completeness, and .. just in time! ðŸ™‚

#### Ben · September 2, 2015 at 5:03 PM

Thanks Chris! This was actually useful as moment.js returns negative zeroes and positive zeroes for different occasions so this function works great to figure out which one is which!

Perfect! thanks!

#### Nathaniel · November 9, 2017 at 11:27 PM

How about an array accessor where you want +0 –> +n to match array[n] and -0 –> -n to match array[array.length – Math.abs(n)].