佳宸学习和分享笔记的地方

0%

JS的类型转换

JS的类型转换

除去 Object 和 Symbol,有如下几种原始类型:

  • Number
  • String
  • Boolean
  • Undefined
  • Null

在 JavaScript 进行对比或者各种运算的时候会把对象转换成这些类型,从而进行后续的操作

对象到原始值的转换

  1. 对象转为布尔都为 true

  2. 对象转为字符串,先toString()方法,如果返回原始类型,再valueOf()方法,再不行就报错

  3. 对象转为数字,先valueOf()方法,如果返回原始类型,再toString()方法,再不行就报错,反过来的

转换规则

==运算规则

  • 如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。

  • 如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值再进行比较。对象通过toString()方法或valueOf()方法转换为原始值。JavaScript语言核心的内置类首先尝试使用valueOf(),在尝试使用toString(),除了日期类,日期类只使用toString()方法,那些不是JavaScript语言核心中的对象则通过各自实现中定义的方法转换为原始值。

两个方法

  • toString

img

  • valueOf

img

  • 转为boolean类型

所有的假值(undefined、null、0、-0、NaN、””)会被转化为 false,其他都会被转为 true

+运算符类型转化

img

题目

1
! + [] + [] + ![]
  1. 先运算一元运算符, +[]转为Number类型 ,返回0,![]转为Boolean类型 ,!true 返回false.!0+[]+false

  2. true+[]+false

  3. true+""+false返回"truefalse"