其实这是早期类C语言的一个通病。
C语言以及与其兼容的C++语言中,是没有boolean类型的,也没有true和false关键字。
所有的条件判断语句,大体上都基本等价于expression != 0。
JavaScript的这个特性便来自于此,也就是说理论上来说if( expression )其实是if( expression is not false value )
当然,JavaScript为了让这个语言看起来更加平易近人点,又搞出了true和false两个关键词和boolean类型,这才出现了各种奇奇怪怪的现象。