JavaScript中的类型转换和运算规则

72 阅读2分钟

类型是如何相互转换的

运算规则咱们得搞清楚这三个东西:

  1. 类型转换规则
  2. 运算规则
  3. 表达式

类型转换规则主要分为四种情况

  • 原始类型->数字类型
ture:1,
false:0,
null:0,
undefined:NaN,
string分为2中情况,空字符串(包含空白字符):0,去掉引号,不是数字就是NaN
  • 所有类型->布尔类型
null:false,
undefind:false,
number:0false,其他的是truestring:空字符串是false,NaN是false,其他是true,
对象:true
  • 原始类型->字符串
null: 'null',
undefined: 'undefined',
number: '数字',
boolean: true'true'false'false'
  • 对象类型->原始类型

先调用valueOf()再调tostring()

数据是如何运算的

算数运算(+,-,*,/,%,++,--)

首先转换成原始类型,转换成数字运算
特殊情况:x+y,x和y有一方是字符串,转换成字符串,然后拼接
特殊情况:NaN和任何类型运算得到的还是NaN

比较运算(>,<,>=,<=,==,!=,===,!===)

>,<,>=,<=
转换成原始类型,然后比较
特殊情况:两端全是字符串,比较字典顺序
特殊情况:两端都是NaN,一定为false

===
类型和值必须都相同
特殊情况:两端存在NaN,一定为false

==
两端类型相同,比较值
两端都是原始类型,转换成数字比较
一端是原始类型,一端是对象类型,把对象转换成原始类型比较
特殊情况:undefinednull只有与自身比较,或者相互比较时,才会返回true,
特殊情况:两端存在NaN,一定为false

!==,!=
对相等取反

逻辑运算符(&&,||)

转换成Boolean
x&&y,x为false返回x,x为true,返回y
x||y,x为false返回y,x为ture,返回x

巧妙利用规则优化代码