Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-检测正零和负零之间的差异_Javascript_Momentjs - Fatal编程技术网

JavaScript-检测正零和负零之间的差异

JavaScript-检测正零和负零之间的差异,javascript,momentjs,Javascript,Momentjs,我用它来计算两次之间的差值。这个图书馆的奇怪之处在于今天和今天的区别是0。今天和明天的差值是-0 我的问题是,如何区分0和-0。JavaScript似乎对它们一视同仁 例如,如果我编写以下代码: if (tomorrow === -0) console.log('It is tomorrow!'); else if (tomorrow === 0) console.log('It is today!'); 这里有一个关于它如何处理返回值的示例(我在澳大利亚,因此根据您在word

我用它来计算两次之间的差值。这个图书馆的奇怪之处在于今天和今天的区别是0。今天和明天的差值是-0

我的问题是,如何区分0和-0。JavaScript似乎对它们一视同仁

例如,如果我编写以下代码:

if (tomorrow === -0)
    console.log('It is tomorrow!');
else if (tomorrow === 0)
    console.log('It is today!');
这里有一个关于它如何处理返回值的示例(我在澳大利亚,因此根据您在word中的位置,您可能需要调整今天和明天的日期)

正如(和评论中)所指出的,在JavaScript中,
+0====-0
通过设计确实计算为
true

您可以使用
Infinity
/
-Infinity
来查看差异(从技术上讲,
+0
/
-0
可能不是生成无限值的唯一数字,因此我保留了额外的签入):

有关更多详细信息以及ECMAScript 5的另一个解决方案,请参见:

function isNegative0(x) {
   if (x!==0) return false;
   var obj=Object.freeze({z:-0});
   try {
      Object.defineProperty(obj,'z',{value:x});
   } catch (e) {return false};
   return true;
}

1/val>0
将执行您想要的操作。对于阳性返回
true
,对于阴性返回
false


这是因为
1/-0
返回负无穷大,而
1/0
返回正无穷大,这两个值可以比较。你也可以为我做一些类似于
1/val==Infinity

的事情,明天
将显示为
-1
,而不是
-0
。(通过你的小提琴)关于0和-0的问题,你能看看这个吗?你现在在哪里,就像在地球上一样?当我在我的大陆用
23
24
尝试时,我得到了你的结果。然而,这两种情况下的天数差异实际上都是零,因为现在是第23天(所以是零天),距离第24天不到半天,也就是零天。在JavaScript中,
0
=
-0
。今天和明天之间的差异不应该是1吗?从ES2015开始,您还可以检查Object.is()是否相等。它还检查特殊情况(例如Object.is(-0,-0)为true,Object.is(0,-0)为false)
function isNegative0(x) {
   if (x!==0) return false;
   var obj=Object.freeze({z:-0});
   try {
      Object.defineProperty(obj,'z',{value:x});
   } catch (e) {return false};
   return true;
}