关于if(xx)和 a==b的判断
2018-08-23 本文已影响0人
不想做肥宅的薛小皮
if(xx)的判断
对于括号里的表达式,会被强制转换为布尔类型
转换规则是除了下面六个值被转为false,其他值都视为true。
- undefined
- null
- false
- 0
- NaN
- ""或''(空字符串)
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
==的判断
运算符原理.png1 == 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