if|if (xx) 判断

number、string、boolean

var a = 5 if(a){ console.log('true')// true } a = 1 if(a){ console.log('true')// true } a = 0 if(a){// false console.log('true') } a = -1 if(a){ console.log('true')//true } a = NaN if(a){//false console.log('true') }

number 有两个假值,0 NaN
if ("hello") { console.log("hello")// hello }if ("") { //false console.log('empty') } if (" ") { console.log('blank') // blank }

string 有一个假值,'' (空字符串)
if(undefined){ //false consoel.log(1) } if(null){ //false console.log(2) }

undefined 和 null 都是假值
// 如下代码输出什么? if ([0]) { console.log('array') // array }if('0.00'){ console.log('0.00') // 0.00 }

if([]){ console.log('空数组') // 空数组 } var fn = function(){ return fn } if(fn()){ console.log('函数')// 函数 } var obj ={} if(obj){ console.log('空对象') // 空对象 }

可以看出js有六个假值,0,NaN,''(空字符串),false,undefined,null
== 判断 相等运算符(==),比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。
看个例子
"" == 0// true " " == 0// true "" == true// false "" == false// true " " == true// false

再看个例子
!" " == true// false !" " == false// true "hello" == true// false "hello" == false // false "0" == true// false "0" == false// true "00" == false// true "0.00" == false// true

if|if (xx) 判断
文章图片
下面的例子,你能做对几道
undefined == null//题目1 true == {}//题目2 [] == true//题目3 var obj = { a: 0, valueOf: function(){return 1} } obj == "[object Object]"//题目4 obj == 1//题目5 obj == true//题目6

对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。
上题答案
1.true 2. false 3.false 4.false 5.true 6.true
【if|if (xx) 判断】不建议使用相等运算符(==),类型转化太难记了,建议使用严格相等运算符(===),严格相等运算符不做类型转化,是不是好用多了

    推荐阅读