信息
- 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;