a) if(flag != "") 只会判断flag变量是否为空串。如 var strA = ""; strA == "" 返回true, 但是var strA; strA == "";返回false。 而“”== false返回true。
b) if(flag != null) 只会判断flag是否为空对象。 null == false,返回flase。
c) if(flag == undefined) 当我们用var 声明一个属性时如果不为它指定值,默认值为undefined。当我们声明一个属性如:var strB;没有指明属性值和类型时,判断strB == null 和 strB == undefined、null == undefined 都返回true。为什么呢,因为“==”和“!=”判断符会对判断的双方进行类型转换。
d) if(null === undefined)返回false。因为undefined是JS的一种数据类型,而null是空对象。"==="和“!==”是恒等运算符,它们判断的双方不会进行类型转换,而且类型必须一致。
e) if(flag)该判断表示flag存在并且不为null,并且不为undefined,也不为""空字符串时返回true,否则返回false。
其实大家不确信的时候用一种简单的办法可以搞懂,试试typeof(xxx); typeof(null)=object,typeof(undefined)=undefined,typeof("")=string,typeof(NaN)=number。