JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,比如:在条件语句或者循环语句中
falsy
值 说明 false false 关键字 0 数值 zero -0 负 zero 0n 当 BigInt 作为布尔值使用时,遵从其作为数值的规则。0n 是 falsy 值。 "", '', `` 这是一个空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号 "", 单引号 '', 或 模板字面量 `` 定义。 null null undefined undefined NaN NaN - truthy
除了falsy以外的所有值都是truthy,包括空数组、空对象
这里要区分非严格相等==的类型转换,比如:
Boolean([]) === true // []明显是truthy真值
但是
[] == false // true
步骤如下:
符合一个操作数是对象,另一个是基本类型的条件
1.@@toPrimitive()拿到[]原始值,就是[]本身
2.valueOf()
[].valueOf(), // 返回[]
3.toString()
[].toString() // 返回''
4.'' == false,进入基本类型的比较环节
如果其中一个操作数是布尔型而另一个不是,则将布尔型转换为数字:true 转换为 1,false 转换为 0。然后再次松散地比较两个操作数。
5.第五步,布尔类型false转为0
使用与 Number() 构造函数相同的算法将字符串转换为数字。
6.第六步,Number()转换数组类型转换后的值''为0
7.最后一步,0 == 0,返回true
[].valueOf().toString() == false // true
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。