布尔比较时,true转1、false转0再参与运算:如true==1→true,false==''→true;但null==undefined直接为true,===不转换类型,关系运算符同理先转数字。

布尔类型参与比较时,核心就一条:先转成数字,再和其他值比。true 变 1,false 变 0,之后按数字规则走。
所有布尔比较都往数字靠
不管另一边是字符串、数字、对象还是 null/undefined,只要布尔值出现,它自己一定先变成 0 或 1:
-
true == 1→1 == 1→ true -
false == 0→0 == 0→ true -
true == '1'→1 == Number('1')→1 == 1→ true -
false == ''→0 == Number('')→0 == 0→ true -
false == []→0 == Number([])→0 == Number('')→0 == 0→ true
注意两个特例不走这条路
这两个情况不触发布尔转数字:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
-
null == undefined→ 直接返回 true(规范硬性规定) - 用
===时,类型不同直接返回 false,不转换
关系运算符( =)里也一样
只要布尔值出现在 、<code>> 等符号任一侧,它同样先变数字:
-
true > 0→1 > 0→ true false → <code>0 → <strong>true</strong>-
true == '2'是 true,但true 是 <code>1 → <strong>true</strong>;而 <code>true 是 <code>1 → <strong>false</strong>(NaN 参与任何比较都为 false)
记口诀:看到布尔,先变 0 和 1
不用记例外,只记动作:遇到 == 或关系运算符,只要一边是 true 或 false,立刻把它换成 1 或 0,剩下全是数字运算。










