var a; var b = ''; var c = false; var d = {}; var e = []; var f = 0; var g = undefined; var h = null; if(a) alert(a); //不会有弹框,if(a)判断结果为false if(b) alert(b); //不会有弹框,if(b)判断结果为false if(c) alert(c); //不会有弹框,if(c)判断结果为false if(d) alert(d); //会有弹框,弹出[Object Object],d会被默认为一个没有任何属性的对象 if(e) alert(e); //会有弹框,弹出的是空白,e是一个没有属性的数组 if(f) alert(f); //不会有弹框,if(f)判断结果为false if(g) alert(g); //不会有弹框,if(g)判断结果为false if(h) alert(h); //不会有弹框,if(h)判断结果为false 总结: 一)当变量为以下的值时,if直接判断变量得到结果为false: 1、初始化未定义变量 2、空字符串(不是空白字符串) 3、布尔值的false 4、值为0 5、未定义的值undefined 6、null 二)当变量为以下值时,if直接判断变量得到的结果为true: 1、空对象 2、空数组 所以js直接判断变量不能用于判断对象和数组是否为空的情况。