javascript中转布尔值仅6个假值:undefined、null、0、-0、+0、nan、""、document.all;其余均为真值;boolean()显式转换更清晰,!!隐式转换等价但可读性差。

JavaScript 中将其他数据类型转换为布尔值,主要通过 Boolean() 构造函数或双重取反(!!)操作实现。这两种方式本质相同,都会依据“真值(truthy)”和“假值(falsy)”规则进行转换。
哪些值会被转成 false(假值)
只有以下 6 个值在转换时结果为 false,其余所有值均为 true:
- undefined
- null
- 0(包括 +0、-0)
- NaN
- ""(空字符串)
- document.all(仅限浏览器环境,是历史遗留的特殊情况,一般无需关注)
使用 Boolean() 显式转换
这是最清晰、可读性最好的方式,明确表达转换意图:
Boolean(0) → false
Boolean("hello") → true
Boolean([]) → true(空数组也是 truthy)
Boolean({}) → true(空对象也是 truthy)
Boolean(new Boolean(false)) → true(包装对象本身是 truthy!注意陷阱)
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
使用 !! 隐式转换(常用但需注意语义)
两个逻辑非运算符连续使用,等价于 Boolean(),常用于条件判断简化:
!!"abc" → true
!!null → false
!!(123 && 0) → false(先计算逻辑与,再取反两次)
⚠️ 注意:虽然简洁,但在团队协作或复杂表达式中可能降低可读性,建议优先用 Boolean() 明确语义。
常见易错点提醒
- new Boolean(false) 是对象,不是原始布尔值 → Boolean(new Boolean(false)) === true
- Number("abc") 得到 NaN → 转布尔为 false
- String(0) 得到 "0" → 非空字符串 → true
- 自定义对象默认都是 truthy,除非显式部署 Symbol.toPrimitive 或 valueOf() 返回 falsy 值(极少需要)










