Possible Duplicate:
Why does ('0' ? 'a' : 'b') behave different than ('0' == true ? 'a' : 'b')
'0' == false; // true
'0' || 1; // '0'
'0' ? true : false; // true
!!'0' // true
Is "==" will cast '0'-> 0 -> false, but other don't?
I want more detail.