摘要:可以理解为,它们其实都是表示没有值没有值的变量和没有值的对象,因此认为它们相等。使用运算符时,也不必考虑各种复杂的规则拼接在使用号进行拼接时,会先将数字转换为字符串,再进行拼接操作。
在将两个类型不同的值进行比较时,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
摘要:函数定义表达式。对象创建表达式。需要注意的是,大多数运算符都是由标点符号表示的,比如和。也就是说,空字符串将被当作,布尔值将被当作。对于和,则分别调用函数并取得字符串和。 表达式 表达式是由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。JavaScript 表达式主要有以下几种形式: 原始表达式:常量、变量、保留字。 对象、数组初始...
摘要:在比较字符串数值和布尔值的相等性时,问题还比较简单。但在涉及到对象的比较时,问题就变得复杂了。和是相等的要比较相等性之前,不能将和转换成其他任何值如果有一个操作数是,则相等操作符返回,而不相等操作符返回。 console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比较字符串、数值和布尔值的相等性时,问题还...
摘要:虽然你可能很惊讶甚至可能怀疑是的但是这都是有语言自己的一个隐式类型转换的套路。基本的隐式类型转换基本类型的隐式转换这个其实我们使用的最多例如结果返回的是而不是这就是类型的隐式转换。 基本上所有的语言都有 隐式类型转换 ,但是对于 弱类型语言(JS) 来说 ,隐式类型转换会比 强类型语言(Java) 带来更大的副作用,有些行为甚至是不可思议的。虽然你可能很惊讶 ,甚至可能怀疑是 JS 的...
阅读 3435·2021-10-14 09:42
阅读 2720·2021-09-08 10:44
阅读 1302·2021-09-02 10:18
阅读 3601·2021-08-30 09:43
阅读 2797·2021-07-29 13:49
阅读 3721·2019-08-29 17:02
阅读 1578·2019-08-29 15:09
阅读 1036·2019-08-29 11:01