【工具函數】數值+0和-0的區分

信息

  • 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;
發佈了40 篇原創文章 · 獲贊 28 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章