数据类型转换
JS是一种弱类型语言:变量能保存的数据不限定任何类型
1. 显式数据类型转换
什么是显示类型转换:程序员主动转换(可以理解为使用关键字来转换)
注意:数据类型的转变并不会改变原来变量的值,而是会产生一个新的值
- 增加代码的可读性
- 提升代码的性能
- 保证代码的安全(正确方式运行)
其他类型转换成number类型:需要进行数学算术运算
系统提供了一个内置对象:Number Number(其他类型)
// 不是所有内容都需要转换:根据要都数据格式进行转换
// 需要进行数学算术运算:其他类型要转成数字
// 系统提供了一个内置对象:Number Number(其他类型)
let num = 1;
let str = '1'; // 数字型字符串
let bl = true;
let un;
let nu = null;
console.log(Number(str)); // 数字型可以正确转数字
console.log(Number('abc')); // NaN
console.log(Number('12a')); // NaN
console.log(Number('')); // 0
// Number()只能将数字型字符串转成数字:其他都是NaN(空字符串可以转0)
console.log(Number(bl)); // 1
console.log(Number(false)); // 0
// Number()将布尔转数字:true变成1,false变成0
console.log(Number(un)); // NaN
console.log(Number(nu)); // 0
// 空对象null是可以转成0的,undefined转成NaN
其他类型转成字符串:需要进行字符串连接
系统提供了一个内部对象:String String(其他类型)
// 其他类型转字符串非常简单:所见即所得,只加了引号
console.log(String(num)); // '1'
console.log(String(bl)); // 'true'
console.log(String(un)); // 'undefined'
console.log(String(nu)); // 'null'
console.log(String(''));
其他类型转成布尔类型:需要判定数据是否满足条件
系统提供了一个内部对象:Boolean Boolean(其他类型)
// 布尔类型:只要记住转false的几种:其他全是true
console.log(Boolean(0)); // false
console.log(Boolean(-0)); // false
console.log(Boolean('')); // false
// console.log(Boolean('0')); // true
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
console.log(Boolean(NaN)); // false
// console.log(Boolean(Infinity)); // true
console.log(Boolean(-NaN)); // false
2. 隐式数据类型转换
运算符两边数据类型不一致,编译器自动帮我们转换一致在计算,这是js的语法特点
自动转换的规则就是三个:Number() String() Boolean()
- 什么情况下会进行自动转换呢?
- 转数字
/*
算术运算符:+ - * / %
有数字参与的比较:8种运算符
+:放在内容前面(强转数字)
*/
console.log(1 - '1'); // 0
console.log(2 > true); // true: 2 > 1
let age = +prompt('请输入年龄');
console.log(age);
- 转字符串
// +:且有一个数据是字符串
console.log(1 + '1'); // 11
- 转布尔
// !:逻辑非
console.log(!1); // false
// 1. 将1转成布尔:true
// 2. 进行取反
网友评论