JavaScript 是一种动态类型语言 (dynamically typed language)。这意味着你在声明变量时可以不必指定数据类型,而数据类型会在代码执行时会根据需要自动转换。
那么为什么需要类型转换呢?
使用表单、prompt 获取过来的数据默认是字符串类型的,不能直接简单的进行加法运算,此时需要转换变量的数据类型。
类型转换就是把一种数据类型的变量转换成我们需要的数据类型。
编写程序时过度依赖系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
概念:自己写代码告诉系统该转成什么类型。
字符串转数字
parseInt()
parseInt
方法只能返回整数,所以使用它会丢失小数部分。
parseFloat()
Number()
数字转字符串
在包含的数字和字符串的表达式中使用加法运算符(+),JavaScript 会把数字转换成字符串。
String()
变量.toString()
数据 + ' '
null
和 undefined
都不能使用 .toString()
转字符串
Boolean()
数据类型 | 转换成布尔值 |
---|---|
undefined | false |
null | false |
0 | false |
NaN | false |
false | false |
' ' | false |
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
+
号两边只要有一个是字符串,都会把另外一个转成字符串
除了+
以外的算术运算符 比如 -
*
/
等都会把数据转成数字类型
在没有字符串类型的前提下,其他类型使用 +
也会存在一些隐式转换
console.log(1 + true) //2
console.log(1 + null) //null转为0
console.log(1 + undefined) //undefined是NaN
缺点:
小技巧:
+号作为正号解析可以转换成Number