47.if(xx) a==b 运算符常见误区

本文探讨JavaScript中if语句的行为及不同值在布尔上下文中的表现,并解析了常见类型的隐式转换规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if(xx) a==b 运算符常见误区

If(xx)

复制代码
 1 // 题目1:如下代码输出什么?
 2 if ("hello") {
 3     console.log("hello")
 4 } //true
 5 
 6 // 题目2:如下代码输出什么?
 7 if ("") {
 8     console.log('empty')
 9 }//false
10 
11 // 题目3:如下代码输出什么?
12 if (" ") {
13     console.log('blank')
14 }//true
15 // 题目4:如下代码输出什么?
16 if ([0]) {
17     console.log('array')
18 }//true
19 
20 if('0.00'){
21   console.log('0.00')
22 }//true
23 
24 if(+0.00){
25    console.log('haha')
26 }//false +转换为数字
27 
28 if([]){
29    console.log('haha')
30 }//turn
复制代码

括号里的表达式,会强制转换为布尔类型。 不要写上面误导的写法,if(a === 0){ }   

类型结果
Undefinedfalse
Nullfalse
Boolean直接判断
Number+0, −0, 或者 NaN 为 false, 其他为 true
String空字符串为 false,其他都为 true
Objecttrue

==的判断

复制代码
 1 "" == 0  //题目1
 2 " " == 0  //题目2    不行
 3 "" == true  //题目3   
 4 "" == false  //题目4
 5 " " == true  //题目5!
 6 " " == true  //题目6
 7 !" " == false  //题目7
 8 "hello" == true  //题目8   不行  object对象必须经Valueof 再经toString
 9 "hello" == false //题目9
10 "0" == true  //题目10
11 "0" == false  //题目11
12 "00" == false  //题目12
13 "0.00" == false  //题目13
14 undefined == null  //题目14
15 true == true  //题目15
16 [] == true  //题目16
17 var obj = { 
18   a: 0, 
19   valueOf: function(){return 1} 
20 } 
21 obj == "[object Object]"  //题目17
22 obj == 1  //题目18
23 obj == true  //题目19
复制代码

解密

xy结果
nullundefinedtrue
NumberStringx == toNumber(y)
Boolean(any)toNumber(x) == y
ObjectString or NumbertoPrimitive(x) == y
otherwiseotherwisefalse

toNumber

typeResult
UndefinedNaN
Null0
Booleanture -> 1, false -> 0
String“abc” -> NaN, “123” -> 123

toPrimitive

对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值