在es5中,处理true == 1 和 false == 0 的判断流程是这样的:es5
好比比较 true == '1',过程以下:spa
先将true 转换为number,ToNumber(true) == '1'字符串
==> 1 == '1' get
再将string 类型转换为数字,1 == ToNumber('1')string
==> 1 == 1io
==> trueim
ToNumber 是ES5中的一个abstract operation,以下图:img
同理,false == '0',类型转换
==> ToNumber(false) == '0'co
==> 0 == '0'
==> 0 == 0
==> true
不过须要注意一下,== 只是判断值相等,若是修改成 true === '1' 或者 true === 1 则都为false,由于===是判断值和类型都相等