文章博客

技术团队文档示例


【工具函数】数值+0和-0的区分

<h4>信息卡片</h4> <ul> <li>时间 : 2020-01-21 10:20:49 星期二</li> <li>tag : <code>Number</code></li> </ul> <h4>题目描述</h4> <p>JavaScript的“0”值有两个,+0和-0。 那么怎么区分呢?</p> <h4>解题思路</h4> <p>我们看到+0和-0,大概想尝试把该数字通过toString()转化成字符串,在使用indexOf('-')判断是否等于0,或者charAt(0)判断是否等于-。很不幸,数值在进行toString()的时候就自动将其转为0了,所以此方法行不通。</p> <p>尝试另外一种思路:除法:有+Infinity和-Infinity之分,分别表示正无穷和负无穷。我们就想到使用1/+0或1/-0,来区分</p> <h4>参考代码</h4> <pre><code class="language-javascript">function isNegtiveZero(value) { if (value !== 0) { throw new RangeError("The argument must be +0 or -0"); } return 1 / value === -Infinity; } console.log(isNegtiveZero(+0) === false); console.log(isNegtiveZero(-0) === true);</code></pre> <p>ECMAScript2015添加了一个方法Object.is用于对两数值进行比较,可以用于比较±0</p> <pre><code class="language-javascript">Object.is(+0, 0) === true; Object.is(-0, 0) === false;</code></pre>

页面列表

ITEM_HTML