资讯专栏INFORMATION COLUMN

Js中相等运算符如何转换操作数

dabai / 694人阅读

摘要:可以理解为,它们其实都是表示没有值没有值的变量和没有值的对象,因此认为它们相等。使用运算符时,也不必考虑各种复杂的规则拼接在使用号进行拼接时,会先将数字转换为字符串,再进行拼接操作。

在将两个类型不同的值进行比较时,Js会自动将其中一个值转换为另一个值的类型,再进行比较

比较数字与字符串

这种情况下,都会将字符串转换为数字,再对两个数字进行比较

99 == "98"
99 == 98
false

但实际并非所有的字符串都能转换为数字:

99 == "xiaoming"
99 == NaN//因为NaN不与任何东西相等
false
比较布尔值与其他类型

这种情况下,都会将布尔值转换为数字,再进行比较,true会转换为1,false会转换为0。有些情况下,为了判断需要做出多次转换:

"1" == true
"1" == 1
1 == 1
true
比较null与undefined
undefined == null
true

这两个值的比较结果为true,看似有点奇怪,但是规则就是这样。可以理解为,它们其实都是表示“没有值”(没有值的变量和没有值的对象),因此认为它们相等。

所以在Js中,在经常做检验的场合中,其实没有必要同时判断null和undefined
例外

上述三种情形已经可以确定所有的请况,只是对于一些边界情况需要额外注意。一个主要注意的是对象的比较,另一个需要注意的是某些特殊的情形

1 == ""
1 == 0//空字符串转为数字的结果是0,可以自己测试一下
false
附录 ===运算符

对于===运算符,当且仅当两个值的类型和值都相同时,结果才为true。
使用===运算符时,也不必考虑各种复杂的规则

拼接

在使用+号进行拼接时,Js会先将数字转换为字符串,再进行拼接操作。

1 + “str”
“1str”

但必须注意的是,+号的结合性是从左到右的,所以1 + 2 + “str”的结果为3str,而1 + (2 + "str")的结果是12str

对于boolean类型,将它与字符串相加时,结果为字符串。true + " love"结果为true love。不过在编写代码时,应当避免这种代码,以免给人带来误解
其它算术运算

对于其它算术运算符,如乘法、除法和减法,Js将认为你要执行的是算术运算,而不是字符串运算3 * "4"会自动转换为3 * 4

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107023.html

相关文章

  • js面试题(下)

    摘要:短路运算返回值是什么又称为短路或,短路如果左侧为真,则不再进行右侧运算,同时返回左侧表达式运算结果。上面是不存在的,所有结果为,转成就是,那么就会运算,把赋值给的同时,返回值也是,所以打印返回结果是函数内部变量有哪些 DOM元素e的e.getAttribute(propName)和e.propName有什么区别和联系 e.getAttribute(),是标准DOM操作文档元素属性的方...

    zhoutao 评论0 收藏0
  • JS基础学习03「表达式和算符

    摘要:函数定义表达式。对象创建表达式。需要注意的是,大多数运算符都是由标点符号表示的,比如和。也就是说,空字符串将被当作,布尔值将被当作。对于和,则分别调用函数并取得字符串和。 表达式 表达式是由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。JavaScript 表达式主要有以下几种形式: 原始表达式:常量、变量、保留字。 对象、数组初始...

    dcr309duan 评论0 收藏0
  • JS鲜为人知的问题: [] == ![]结果为true,而 {} == !{}却为false

    摘要:在比较字符串数值和布尔值的相等性时,问题还比较简单。但在涉及到对象的比较时,问题就变得复杂了。和是相等的要比较相等性之前,不能将和转换成其他任何值如果有一个操作数是,则相等操作符返回,而不相等操作符返回。 console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比较字符串、数值和布尔值的相等性时,问题还...

    csRyan 评论0 收藏0
  • JavaScript 的隐式类型转换

    摘要:虽然你可能很惊讶甚至可能怀疑是的但是这都是有语言自己的一个隐式类型转换的套路。基本的隐式类型转换基本类型的隐式转换这个其实我们使用的最多例如结果返回的是而不是这就是类型的隐式转换。 基本上所有的语言都有 隐式类型转换 ,但是对于 弱类型语言(JS) 来说 ,隐式类型转换会比 强类型语言(Java) 带来更大的副作用,有些行为甚至是不可思议的。虽然你可能很惊讶 ,甚至可能怀疑是 JS 的...

    txgcwm 评论0 收藏0
  • js抽象相等==

    摘要:中抽象相等比较算法大致介绍一下的数据类型的数据类型分为种如果再加上数据类型,一共种与的区别描述一个空值空的对象引用即空指针,被当做一个对象,输出为算是一个吧,输出为。运算符把其值参数转换为非类型对象。 Javascript中抽象相等比较算法 undefined==null //true []==[] //false []==![] //true {}==!{} //false ![]=...

    hzx 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<