乐趣区

关于javascript:js类型转换truthy和falsy

JavaScript 在须要用到布尔类型值的上下文中应用强制类型转换 (Type Conversion) 将值转换为布尔值,比方:在 条件语句或者循环语句

  1. falsy

    阐明
    false false 关键字
    0 数值 zero
    -0 负 zero
    0n 当 BigInt 作为布尔值应用时,听从其作为数值的规定。0n 是 falsy 值。
    “”, ”, “ 这是一个空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号 “”, 单引号 ”, 或 模板字面量 “ 定义。
    null null
    undefined undefined
    NaN NaN
  2. 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
退出移动版