类型转换

JavaScript 是一种动态类型语言 (dynamically typed language)。这意味着你在声明变量时可以不必指定数据类型,而数据类型会在代码执行时会根据需要自动转换。

那么为什么需要类型转换呢?

  • 使用表单、prompt 获取过来的数据默认是字符串类型的,不能直接简单的进行加法运算,此时需要转换变量的数据类型。

  • 类型转换就是把一种数据类型的变量转换成我们需要的数据类型。

显示类型

  • 编写程序时过度依赖系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。

  • 为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。

  • 概念:自己写代码告诉系统该转成什么类型。

转换为数字型

字符串转数字

parseInt()

parseInt 方法只能返回整数,所以使用它会丢失小数部分。

1// 转整数,且开头必须为正负号或者数字开头,且是连续的数字,如果遇到非数字则停止。
2parseInt('+50000axcds123')  //+50000

parseFloat()

1// 可以保留小数,经常用于过滤单位(只能识别数字开头的)
2// 转小数,注意科学记数法e。
3// 开头必须为正负号或者数字开头,且是连续的数字,遇到第一个小数点,向后检测,如果后面是连续的数字则转出,如果遇到非数字或者第二个小数点则停止。
4parseFloat('3.14')
5parseFloat('3e2')  //300

Number()

1// 只有包含纯数字的字符串能被转换出具体的数字,否则结果是NaN.
2// NaN也是number类型的数据,代表非数字。
3Number('3000')  // 3000
4Number(null);	// 0
5Number(undefined);	// NaN

转换为字符型

数字转字符串

在包含的数字和字符串的表达式中使用加法运算符(+),JavaScript 会把数字转换成字符串。

1const x = 'a' + 1;
2console.log(x); // a1
  • String()

  • 变量.toString()

  • 数据 + ' '

  • nullundefined 都不能使用 .toString() 转字符串

    • 数字转字符串要放在 括号 里,例如:(123).toString()

转换为布尔型

  • Boolean()


有6个值当false来看的

数据类型 转换成布尔值
undefined false
null false
0 false
NaN false
false false
' ' false

隐式类型

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。

转换规则

  • + 号两边只要有一个是字符串,都会把另外一个转成字符串

  • 除了+ 以外的算术运算符 比如 - * / 等都会把数据转成数字类型

  • 在没有字符串类型的前提下,其他类型使用 + 也会存在一些隐式转换

    11、数字 + 字符串 :将数字转换为字符串
    22、数字 + boolean :将 boolean 转换为 number类型
    33、数字 + undefined :结果为 NaN,NaN的类型为 number
    44、字符串 + boolean :将boolean 转换为 字符串
    55、boolean + boolean :都转换成number在做相加运算
    • console.log(1 + true) //2

      • 将数字类型转换为布尔类型 只有true 或者 false
      • 把布尔类型 true 或者 false 转为数字类型的话,true转为1,false转为0
    • console.log(1 + null) //null转为0

    • console.log(1 + undefined) //undefined是NaN

    • 缺点:

      • 转换类型不明确,靠经验才能总结
    • 小技巧:

      • +号作为正号解析可以转换成Number