在 Javascript 中乘法
1 * 0 = 0
然而
-1 * 0 = -0
好吧,我可以从技术上理解它的 0,引擎盖下的 0 和 -0 之间有什么不同吗?
有趣的!似乎它们的值是相等的——都不大于另一个,但它们是具有多种副作用的不同对象(包括除以0或-0根据 Roisin 的回答)。
观察到的其他有趣的怪癖:
const a = 0;
const b = -0;
a == b; // true
a === b; // true
a < b; // false
b < a; // false
Object.is(a, b); // false
Object.is(a, -b); // true
b.toString(); // "0" <-- loses the negative sign
a + b; // 0
b - a; // -0
a * b; // -0
Run Code Online (Sandbox Code Playgroud)
是,有一点不同。JavaScript 对零进行了签名,因此两者在内部的表示方式不同。
也存在一些实际差异:
console.log(1 / +0 === Infinity) // true
console.log(1 / -0 === -Infinity) // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |