1)值为null、undefined、‘’、0、false时,为假
(1)已经定义的变量,但是未赋值,所以undefined,为假
var t;
if (t) {
console.log("true");
} else {
console.log("false");
}
//false
(2)空字符串为假,不空的字符串为真
var t1 = "";
var t2 = " ";
if (t1) {
console.log("true");
} else {
console.log("false");
}
//false
if (t2) {
console.log("true");
} else {
console.log("false");
}
//true
(3)true和false
var t1 = true;
var t2 = false;
if (t1) {
console.log("true");
} else {
console.log("false");
}
//true
if (t2) {
console.log("true");
} else {
console.log("false");
}
//false
(4)赋值为0的值为假,其他为真
var t1 = 0;
var t2 = 0.0;
var t3 = -1;
if (t1) {
console.log("true");
} else {
console.log("false");
}
//false
if (t2) {
console.log("true");
} else {
console.log("false");
}
//false
if (t3) {
console.log("true");
} else {
console.log("false");
}
//true
(5)null和undefined为false
var t1 = null;
var t2 = undefined;
if (t1) {
console.log("true");
} else {
console.log("false");
}
//false
if (t2) {
console.log("true");
} else {
console.log("false");
}
//false
2)函数类的if判断
(1)不带括号的,如果定义了为真,没有定义为假
function test() {}
if (test) {
console.log("true");
} else {
console.log("false");
}
//true
(2)带括号的,相当于调用了该函数,所以是根据函数的返回值判断真假,
例子为假是因为没有返回值,所以为undefined。
function test() {}
if (test()) {
console.log("true");
} else {
console.log("false");
}
//false
3)对象类的if判断
(1)已经定义的对象,未赋值则为false
var obj;
if (obj) {
console.log("true");
} else {
console.log("false");
}
(2)赋值后,结果变为真。
var obj = {};
if (obj) {
console.log("true");
} else {
console.log("false");
}
//true
(3)已定义的对象的属性字段和单独的变量是一样的,如果为0、""、false、null 、undefined都为假
var obj = {};
obj.test = "";
obj.test2 = "ceshi";
if (obj.test) {
console.log("true");
} else {
console.log("false");
}
//false
if (obj.test2) {
console.log("true");
} else {
console.log("false");
}
//true;