if ('   ')console.log(true);      
if ('   ' == false)console.log('true');     
if (Boolean('   ') == true)console.log(true);
大家的条件表达式都是真
1,3我还可以理解   我还是翻了下书  李战的《悟透JavaScript》P11中说“例如,undefined,null,'',0这四个值转换为逻辑值时就是false,除这四个家伙再加上false本身外,其他的任何东西转换为逻辑值时都是true。”  呵呵, 他一不小心就忘了NaN这个家伙。。
可是为什么第二个也是真呢   不解不解啊
类似的  Boolean('0')  这个是true
alert('0' == false)还是true.......
我知道等于运算符会自动转换变量的数据类型,如果按照 '0' -> 0 -> false ---->  => '0' == false这个还将就解释的通
那上面的那个就是  '   ' -> Number( '   ')  -> 0 -> Boolean(0)  -> false ---->   =>  '  ' == false (其实这个Number('   ') 等于 0 我也不是接受。在js里还是忘了等于是个可传递操作比较好。)
但是我又发现  如果这么的话  那 '3' -> Number('3') -> 3 -> Boolean(3) -> true ---> '3' != true   那我就猜错了
于是我就大悟   应该是大家一致都转化成number进行比较的吧   '3'  -> Number('3') -> 3 
                                                          true - > Number(true) -> 1   ---> '3'!= true  
但是提醒一下哈  只有两人类型不一样的时候  才需要一致转成number型(我本来以为大家都转型成boolean呢) 
这里说的比较都是传值比较(关于什么是传值比较我有在http://blog.csdn.net/zzzaquarius/archive/2009/11/29/4902235.aspx说过哈)有比较明白的帮忙看看这么理解对吗。/**********一直只顾埋头干活   最近突然发现这些很基础很基础的东西都忘了(或者从来不曾知道)虽然看起来在实际工作中没什么用   但是确是一些烦人的bug的滋生地啊。******/