类型转换
指将其他类型转换为string,number,boolean类型
转化为字符串
方法一:调用被转换类型的toString()方法
- 格式:被转换类型.toString()
- null和undefined两个类型不含有toString()方法,调用会报错!
方法二: 调用String()函数
- 格式:xxx()
- 通用,null --> 'null', undefined --> 'undefined'
转换为数字
方法一;调用Number()函数
- 字符串
- 如果字符串是一个合法数字,转化为数字
- 否则转化为NaN
- 布尔值
- true --> 1
- false --> 0
- null
- 直接转化为0
- undefined
- 直接转换为NaN
方法二:调用parseInt()和parseFloat()函数
- 专门将字符串-->数字
- parseInt()
- 将字符串 解析为一个整数
- 原理:依次从左向右读取一个个字符串中的字符,直到找到字符串中所有的合法整数为止,
- 还可以用于对一个数字进行取整
- parseFloat()
- 将字符串解析为一个小数
转换为布尔值
方法一:使用Boolean()
- 所有表示没有或者错误的都会转换为false
- 数值
- 0和NaN --> false
- 其他 --> true
- 字符串
- 空串 --> false
- 其他 --> true
- null和undefined
- false
- 总结:所有false的情况
- 0,NaN, '', false , null , undefined
运算符
算数运算符
常见二元运算符
- +
- -
- *
- /
- **
- %
拼串
- 字符串+字符串 --> 拼接的字符串
- 任意类型 + '' --> 转换为字符串(原理同String())
- 其他类型的值进行算数运算
- 转换为数值再进行运算
- 隐式类型转换
- 对任意类型 -0,*1 --> 转换为数字(原理同Number())
- NaN+任意类型 --> NaN
一元运算符
- +
- -
- typeof
- 非数字类型进行正负运算
- 先转换为数字,再运算
- +任意类型 --> 转换为数值(原理同Number)
自增和自减
- ++a
- 返回变量自增后的值,新值
- a++
- 返回变量自增前的值,旧值
- --a
- 返回变量自减后的值,新值
- a--
- 返回变量自减前的值,旧值
赋值运算符
常见符号
- =
- +=
- a += x 等价于 a = a + x
- -=
- *=
- /=
- **=
- %=
哪些情况会为变量进行重新赋值
- 对变量使用赋值运算符
- 对变量使用自增自减
逻辑运算符
常见符号
- ! 逻辑非
- 对值进行取反操作
- true变flase,false变true
- 对非布尔值进行逻辑非运算 --> 先转化为布尔值 --> 再取非
- && 逻辑与
- 全为真才真
- 找false的
- 如果第一个值是false,不会去看第二个值
- || 逻辑或
- 全为假才假
- 找true的
- 如果第一个值是true,不会去看第二个值
对非布尔值的逻辑运算
- && 与
- 先转化为布尔值,再运算,最终返回原值
- 第一个值为true,返回第二个值
- 第一个值为false,直接返回第一个
- || 或
- 第一个值为true,直接返回第一个
- 否则返回第二个
null调用toString()不报错的方法
let a = null;
a = a && a.toString();
// console.log(a, typeof a);
利用与运算找false,第一个值a如果是null, 进行与运算,先转化为布尔值false, 直接返回结果【null 'object'】,不会报错
关系运算符
常见符号
- >
- >=
- <
- <=
对非数值类型,进行关系运算
- 先转换为数字,再比较