信息
- tag :
Number
题目描述
JavaScript的“0”值有两个,+0和-0。
那么怎么区分呢?
解题思路
我们看到+0和-0,大概想尝试把该数字通过toString()转化成字符串,在使用indexOf(’-’)判断是否等于0,或者charAt(0)判断是否等于-。很不幸,数值在进行toString()的时候就自动将其转为0了,所以此方法行不通。
尝试另外一种思路:除法:有+Infinity和-Infinity之分,分别表示正无穷和负无穷。我们就想到使用1/+0或1/-0,来区分
参考代码
function isZero(value) {
if (value !== 0) {
throw new RangeError("必须是 +0 or -0"); //对象标明一个错误,当一个值不在其所允许的范围或者集合中。
}
return 1 / value === -Infinity;
}
console.log(isZero(+0) === false);
console.log(isZero(-0) === true);
ECMAScript2015添加了一个方法Object.is用于对两数值进行比较,可以用于比较 ±0
Object.is(+0, 0) === true;
Object.is(-0, 0) === false;