日期:2014-05-16  浏览次数:20304 次

javascript中undefined , null , "" , 0 的逻辑值
最近有个问题一直困扰我,今天终于解决了,直接说原理吧
var time = "" ;
time = 0 ;
if(time == "")
    alert("true");
上述代码,会alert true么,实际上是会的。
查了书籍<悟透javascript>后,里面有详细解释:
undefined , null , "" , 0 这四个值转换为逻辑值时就是false,其他所有东西转换逻辑值都是true,
所以上述代码一步一步分析就是:
var time = "" ;  //等同于false
time = 0 ;    //等同于false
if(time == "")     //false == false
    alert("true");

再深入一点,
"123" == 123   //true
"0123" == 0123 //false 因为0123默认是八进制数
"123" === 123 //false ,值相同,但类型不同

这里===是全等的意思,数据值与数据类型都必须相等才为true!!

javascript弱类型定义很灵活,但一旦代码不严谨就会花上一两天的时间慢慢调试javascript。
我靠!