类型转换
1.数据转为数字型
true -> 1
false -> 0
null -> 0
undefined -> NaN
//string类型
Number('') -> 0
Number(' ') -> 0
Number('\n\r\t') -> 0
Number('123') //去掉引号 123
Number('123a') //去掉引号 NaN
Number(' 123 ') //去掉首位空格 123
Number('12 3') //数字中间有空格 NaN
2.数据转换布尔型
null、undefined、0、NaN、'' -> false 其他为true
3.数据转换字符串
null -> 'null'
undefined -> 'undefined'
数字 -> '数字'
true -> 'true'
false -> 'false'
4.对象转换数据
- 使用valueof()转换
- 如果还是对象,使用toString()进行转换
- 如果还是对象,出现报错
运算规则
1.算数运算
+、-、*、/、%、++、--
规则:
- 转为数字进行运算
- 加法运算
x+y,当参与运算的值有一个是字符串类型,会进行字符串拼接 - NaN参与算数运算时,结果永远为NaN
[]+{} //使用对象转换数据
1. [] -> ''
2. {} ->'[object object]'
3. []+{}='[object object]'
2.比较运算
>、<、>=、<=、==、!=、===、!==
>、<、>=、<=:
- 两端是字符串,比较字典的顺序
- 两端存在NaN,结果为false
- 转换成数字后,进行比较
==:
- 两端类型相同,比较值
- 两端类型数据,转换成数字型比较
- 一端是类型数据,一端是对象数据,将对象数据转换为类型数据比较
- undefined和null只有在与自身比较或相互比较时,结果为true,否则为false
- 两端存在NaN时,结果为false
===:
- 类型和值必须都相同
- 两端存在NaN,结果为false
!=、!==:
- 对相等进行取反操作
3.逻辑运算
&&、||、!
x&&y
- x为false,返回x
- x为true,返回y
x||y
- x为false,返回y
- x为true,返回x
表达式
数据的三种形式:
- 字面量
- 变量
- 表达式(具有返回值)