Skip to content

隐式转换与布尔判定

源码

ts
console.log([] + [])
console.log([] + ![])

讲解

ts
/**
 * 对象转原始类型
 * 第一步优先调用`Symbol.toPrimitive`
 * 没有,第二步调用 valueOf()
 * 没有,第三步调用 toString()
 * 如果还没有,就报错,
 * 所以 [] + [] => '' + '' => ''
 */

/**
 * 布尔判定,null、undefined、0、NAN、false、'', 这些情况是false
 * 所以 [] + ![] => '' + true => 'true'
 */