为什么要类型转换
JavaScript是弱数据类型: JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
坑: 使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
console.log('10000' + '2000') // 输出结果 100002000
此时需要转换变量的数据类型。
就是把一种数据类型的变量转换成我们需要的数据类型。
o
隐式转换
默写运算符被执行的时候,系统内部自动将数据类型进行转换,这种转换称之为隐性转换。
规则:
1.+号两边只要有一个是字符串,都会把另外一个转成字符串
2.除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
缺点:转换类型不明确,靠经验才能总结
小技巧:+号作为正号解析可以转换成Number
显式转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。概念: 自己写代码告诉系统该转成什么类型
转换为数字型
转换为数字只有两种结果,要么是数字,要么是NAN。
Number(数据)
1.转成数字类型 2.如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)
,即不是一个数字 3.NaN也是number类型的数据,代表非数字
4.布尔true会转变为1 ,false为0。
5.null会变为0。
parseInt(数据)
只保留整数
如果第一个字符不是数字输出NaN,如果第一个是数字,则遇到非数字就停止提取。
parseFloat(数据)
可以保留小数
如果第一个字符不是数字输出NaN,如果第一个是数字,则遇到第一个小数就停止提取。
let str = '123abc'
console.log(Number(str));
输出NaN
let str = '123abc'
console.log( parseInt(str));
输出123
let str = '10.5.5'
console.log(parseFloat(str));
输出10.5
转换为字符型:`
1.String(数据)
2.变量.toString(进制)
转换为布尔型(重要)
Boolean(数据)
字符串型
:空字符串会转换为false,其他都会转变为true
数字类型
:0和NaN会转换为false,其他会转换为true
undefined类型
:会被转换为false
null类型
:会被转换为false