首页 > 其他 > 详细

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

时间:2018-01-08 00:52:10      阅读:304      评论:0      收藏:0      [点我收藏+]

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 运算符常见误区

原文:https://www.cnblogs.com/zhangzheng022/p/8232713.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!