# 类型转换

# 强制类型转换

详见上一节 "内置顶层函数"

  • Number() 转换成数值类型
  • String() 转换成字符串类型
  • Boolean() 转换成布尔类型
  • parseInt() 将字符串转换为整型
  • parseFloat() 转换为浮点型

# 隐式类型转换

由于js是弱类型语言,在使用算术运算符时,运算符两边的数据类型可以是任意的。比如,一个字符串可以和数字相加。之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会悄悄的把他们进行了隐式类型转换

# 算数运算符类

# - * / %

* 在进行算术运算,如果操作数不是数值,将会隐式的调用Number()函数,按照这个函数的转换规则进行转换
* 如果转换不成功,整个表达式返回NaN

# +

*  任何数据类型和`字符串`相加,返回他们拼接的结果。
*  如果操作数不包含字符串,则规则同 `- * / %`

# 关系运算符类

  • 两个操作数都是字符串,则比较两个字符串对应的字符编码
  • 除此之外,参与比较的数据都会隐式调用Number()进行转换后再比较

# 逻辑运算符类

  • && || !运算,会调用 Boolean()函数判断参与逻辑运算的数据的真假性

# 语句

ifwhiledo while语句和三元表达式里面的判断条件表达式会隐式的调用Boolean()函数,按照这个函数的转换规则,转换为相应的布尔值

// 判断一个字符串是否为空
var str = "";
if(str){
  console.log("str is true")
}