if(xx)和 a==b的判断

最近在学js,这不刚开始学就遇到困难了,被这个if(xx)和 a==b的判断搞得直发懵。可能是有一些知识点没有掌握,所以我就理一理相关的知识点,写一篇关于if(xx)和 a==b的判断

if(xxx){}的判断

js 是如何处理的呢?先看看原理

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

再来几道题

// 题目1:如下代码输出什么?
if ("hello") {
    console.log("hello")
}

// 题目2:如下代码输出什么?
if ("") {
    console.log('empty')
}

// 题目3:如下代码输出什么?
if (" ") {
    console.log('blank')
}

对照着上面的原理这几道题是不是就简单了很多呀,对于括号里的表达式,会被强制转换为布尔类型,括号里的表达式为true就输出结果,为false就不输出结果

== 的判断

对于==的判断,js是怎么处理的呢,先看看原理

x y 结果
null undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
Object String or Number toPrimitive(x) == y
otherwise otherwise false

来几道题试试

"" == 0  //题目1
" " == 0  //题目2
"" == true  //题目3
"" == false  //题目4
" " == true  //题目5

明白了原理做题是不是就简单多了呢,再上几道升级版的题目试试

!" " == true  //题目6
!" " == false  //题目7
"hello" == true  //题目8
"hello" == false //题目9
"0" == true  //题目10
"0" == false  //题目11
"00" == false  //题目12
"0.00" == false  //题目13
undefined == null  //题目14
{} == true  //题目15
[] == true  //题目16
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //题目17
obj == 1  //题目18
obj == true  //题目19

对照着下面的原理再做一遍吧,看看对了几个

toNumber
type Result
Undefined NaN
Null 0
Boolean ture -> 1, false -> 0
String “abc” -> NaN, “123” -> 123
toPrimitive

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

你可能感兴趣的:(if(xx)和 a==b的判断)