1.为什么要转换变量的数据类型?
1.JavaScript是弱数据类型: JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
雷区: 使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
<script>
//先获取两个变量
let num1 = prompt('请输入第一个数字')
let num2 = prompt('请输入第二个数字')
// 假使输入第一个数字为100, 第二个数字为20
//将两个变量相加 控制台展示结果
console.log(num1 + num2); //控制台结果是 10020
//由于prompt获取来的数据是字符串类型,相加会使两个变量拼接
</script>
2.隐式转换类型
1.含义
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
2.规则
1.+ 号两边只要有一个是字符串,都会把另外一个转成字符串型
2.除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
3.+号作为正号解析可以转换成Number
3.语法书写
<script>
//字符串隐式转换
//1.运算符 + 号两边变量如果有字符串型,那么两者相加会变成字符串型.
//2.通常会使用+ '' 来进行隐式转换
let num1 = 10;
let num2 = '10';
num3 = num1 + num2
console.log(num3 ); // 控制台结果1010
console.log(typeof num3); //检测类型 string
//数字隐式转换
//1.除了算术+加法不能转换数字类型 其他的- / * 可以转换数字型
//2.在字符串变量前面加+号 会把字符串转换为数字型 这种叫数字隐式转换
//3.通常会- 0 来进行隐式转换
let num4 = num3 - 0;
console.log(num4);
let num3 = '100'
console.log(+num3);
</script>
3.显性转换类型
1.含义
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
2.转换数字类型
1.Number(数据)
转成数字类型
如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)即不是一个数字
NaN也是number类型的数据,代表非数字
<script>
let num1 = '111';
let num2 = Number(num1);
console.log(num2); //控制台结果number
//如果num1内容是文字的话 控制台会显示Nan
</script>
2.parseInt(数据)
parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN。
如果第一个字符不能转换为数字,parseInt会返回 NaN。
<script>
//parseInt 也可以转换为数字型 但是会取整如
let age = '12.5'
let age2 = parseInt(age)
console.log(age2); // 控制台结果 12
//如果字符串里面内容不是数字可能会转换为NaN
</script>
3.parseFloat (数据)
parseFloat() 函数解析一个参数(必要时先转换为字符串)并返回一个浮点数。
<script>
//parseFloat 也可以转换为数字型 保留小数点
let height = '175.5';
let height2 = parseFloat(height)
console.log(height2); //175.5
</script>
3.转换字符串类型
1. String (数据)
String 全局对象是一个用于字符串或一个字符序列的构造函数, 使用 String 函数将其他值生成或转换成字符串
<script>
let num1 = 123 ;
let num2 = String(num1); //常用
console.log(num2); //控制台输出为123 字符串型 string
</script>
2.toString
toString() 方法返回指定 Number 对象的字符串表示形式。
<script>
let age = 123;
let age2 = age.toString()
console.log(typeof age2); //常用
</script>