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

Posted 青春是首不老歌。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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){ }   

类型结果
Undefined false
Null false
Boolean 直接判断
Number +0, ?0, 或者 NaN 为 false, 其他为 true
String 空字符串为 false,其他都为 true
Object true

==的判断

 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
 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结果
null undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
Object String or Number toPrimitive(x) == y
otherwise otherwise false

toNumber

typeResult
Undefined NaN
Null 0
Boolean ture -> 1, false -> 0
String “abc” -> NaN, “123” -> 123

toPrimitive

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

 

 

 

以上是关于if(xx) a==b 运算符常见误区的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 使用误区 5 (转)

常见的关系运算符(if else和case语句)

如何通过调用函数交换两个变量的值及常见误区

JavaScript 使用误区

IT人学习方法论:学习误区

编写代码片段的更简洁的方法