为什么(~(1<<31;转换为字符串时t相等
Why does (~(1 << 31)) === ~(1 << 31) yet they aren't equal when converted to strings?
在JS中:
(~(1 << 31)) === ~(1 << 31)
> true
(~(1 << 31)).toString(2) === ~(1 << 31).toString(2)
> false
这怎么可能?我认为===
运算符是相同实体之间的严格比较?
事实证明,由于JS:中的操作顺序,我没有比较确切的值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
成员访问.toString()
优先于按位运算符。哇!
这是因为表达式的求值方式如下:
(~(1 << 31)).toString(2) === ~((1 << 31).toString(2))
//----------------------------^ see the parenthesis
相关文章:
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- 正在删除'<以及那些>'来自javascript中的字符串
- 转换<a>使用jQuery将文本字符串转换为dom元素
- jQuery:如何添加<br/>在不同的字符串中换行以分隔2中的句子
- 返回List<字符串>Jquery中的from JSON调用具有未定义的长度
- Javascript,字符串带有'<'或者'>'
- 删除第一个和最后一个<br/>来自字符串
- 应用<strong>标记到我的js.coffee文件中的字符串
- 是否可以使用HTML从任意字符串创建Jquery对象,例如var$newlink=$('<a>新链接
- 调用.ajax方法得到未定义的json结果,返回json格式列表<字符串>
- 传递数组列表<ImageItems>从一个活动到另一个活动.图像项包含位图和字符串
- 将**标题**转换为<h1>标题</h1>在一个字符串中遍历大文本
- 根据长度(<4)提取特殊字符之间的子字符串,并将缺失的字符替换为0,使其为4
- Node Selenium WebDriver-目标浏览器必须是字符串,但为<对象>
- 用<为纯文本字符串着色;span>元素
- 为什么(~(1<<31;转换为字符串时t相等
- 替换<a>如果它以字符串JQuery结尾
- 为什么拥有`<脚本>`在字符串文字中导致JS语法错误
- 列表中的Json值<映射<字符串,对象>>在javascript emberjs中