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

2018-08-23  本文已影响0人  不想做肥宅的薛小皮

if(xx)的判断

对于括号里的表达式,会被强制转换为布尔类型

转换规则是除了下面六个值被转为false,其他值都视为true。
if ('') {
  console.log(true);
}
// 没有任何输出

上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。

需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。

if ([]) {
  console.log(true);
}
// true
if ({}) {
  console.log(true);
}
// true
课件题目
if ("hello") {
    console.log("hello")
}
//hello
if ("") {
    console.log('empty')
}
// undefined
if (" ") {
    console.log('blank')
}
//blank
if ([0]) {
    console.log('array')
}
//array
if('0.00'){
  console.log('0.00')
}
//0.00

==的判断

运算符原理.png
1 == true // true 
// Number(true) ===1

0 == false // true 
// Number(false)===0 

"" == 0 // true 
//Number('"") === 0  

" " == 0 // ture
//Number(" ") === 0

"" == true  //false
//true代表1

"" == false  //true
//false代表0

" " == true //false
//!优先级大
!" " == true  //false
!" " == false  //true
//空字符串为false,其他都为true

"hello" == true  //false
"hello" == false //false
//"hello"转换成数字是NAN ,不和任何数字相等
 
"0" == true  //false
//"0"转换成数字就是0,true是1
"0" == false  //true
"00" == false  //true
"0.00" == false //true
undefined == null  //true
{} == true  //false
[] == true  //false
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //false
obj == 1  //true
obj == true  //true
上一篇下一篇

猜你喜欢

热点阅读