JavaScriptには0と-0があります。これはIEEE 754に沿ったものです。
console.log(-0); // -0;マイナス0の性質
-0 === 0の結果はtrue-0 < 0と-0 > 0の結果はfalse-0 + 0の結果は0、マイナスが取り除かれますMath.abs(-0)の結果も0Math.ceil(-0)とMath.round(-0)とMath.floor(-0)の結果も0Math.cos(-0)の結果は1、Math.cos(0)と同じですMath.sign(-0)の結果は-0、元の木阿弥ですObject.is(-0, 0)の結果はfalse、これでマイナスの有無を区別できますが、IE非対応です1 / -0の結果は-Infinity、1 / 0であればInfinityなので区別できます(-0).toString()と(-0).toPrecision(1)と(-0).toFixed(0)の結果は"0"String(-0)と-0+''とテンプレート文字列の${-0}の結果は"0"
どうするとマイナス0になるか
以下の式の結果は全て-0になります。
+(-0)+'-0'Number('-0')-1 / Infinity-0.0-0 - 00 * -1-0 % 1Math.sign(-0)Math.trunc(-0)Math.trunc(-0.99)Math.ceil(-0)Math.ceil(-0.99)
参考リンク