【JavaScript】 数据类型间的转换篇

【JavaScript】 数据类型转换

类型转换就是指将其他的数据类型,转换为String、Number 或 Boolean。

一. 转换为Number

各种数据类型转换情况

转换前类型描述
字符串如果字符串是一个合法的数字,则直接转换为对应的数字。
如果字符串是一个非法的数字,则转换为NaN。
如果是一个空串或纯空格的字符串,则转换为0。
布尔值true转换为1
false转换为0
空值null转换为0
undefinedundefined 转换为NaN

总结

  • 不能被转换的值:‘hello(非数字)’、undefined 转换为 NaN
  • 不存在的值:null、false 转换为 0

方式一 调用Number()函数

调用Number()函数会进行强制类型转换**(在开发中用的不多)**

特点

  • 可以把一个变量强制转换成数值类型
  • 可以转换小数,会保留小数
  • 可以转换布尔值
  • 遇到不可转换的都会返回NaN
var s = "123";
console.log(Number(s));// 123
console.log(Number(false)); // 布尔值false转换成0
console.log(Number('100')); // 100
console.log(Number('hello')); // NaN
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN

方式二 调用parseInt()或parseFloat()

这两个函数专门用来将一个字符串转换为数字的,属于强制类型转换。

parseInt()

可以将一个字符串中的 有效的整数位 \color{red}{有效的整数位} 有效的整数位提取出来(向下取整),并转换为Number。

var a = "123.456px";
a = parseInt(a); 
console.log(a); // 123
console.log('rem120px'); // NaN

特点

  • 从第一位开始检查,是数字就转换,直到一个不是数字的内容就结束了
  • 开头就不是数字,那么直接返回NaN
  • 不认识小数点,只能保留整数

:如果需要可以在parseInt()中指定一个第二个参数,来指定进制。

parseFloat()

可以将一个字符串中的 有效的小数位 \color{red}{有效的小数位} 有效的小数位提取出来,并转换为Number。

特点

  • 从第一位开始检查,是数字就转换,直到一个不是数字的内容就结束了
  • 开头就不是数字,那么直接返回 NaN
  • 认识一次小数点
var a = "123.456px";
a = parseFloat(a); 
console.log(a);// 123.456

方式三 使用算术运算符

除了加法以外的数学运算

如果是数字格式的字符串,除了加法以外的数学运算符,其他的运算符会将数字格式的字符串转换成真正的数字进行运算,如果无法转换成真正的数字,输出NaN。

console.log('12' - 0);// 12
console.log('12' - '10');// 2
console.log('3' / '5'); // 0.6
console.log('3' * '5'); // 15
console.log('3' * 'abc'); // NaN

原理:和Number()函数一样。

方式四 +号

正号,使用在某个数字的前面,具有转换数字的能力。

console.log(+false); // 0
console.log(+'100'); // 100
console.log(+'hello'); // NaN
console.log(+null); // 0
console.log(+undefined); // NaN
console.log(+''); // 0

方式五 tofixed()方法

保留括号里面的数字的小数。结果为字符串格式。(银行家算法)

var num = 2.3445566;
var a = num.toFixed(2);
console.log(a);// 2.34

转Number的案例

(1) 计算年龄
var year = prompt('请输入您的出生年份:');
var age = 2022 - year;
alert('您今年'+age+'岁了');
(2) 简单的加法运算
var a = prompt('请输入第一个值:');
var b = prompt('请输入第二个值:');
var c = parseInt(a) + parseInt(b);
alert('结果为:' + c);

二. 转换为String

方式一 调用被转换数据的toString()方法

变量.toString(),将前面的变量变成字符串格式。(强制类型转换)

var a = 10;
console.log(a.toString()); // 字符串10
  • $\color{red} {注意} $:这个方法不适用于null和undefined。因为null和undefined这两个类型的数据中没有方法,所以调用toString()时会报错。

方式二 调用String()函数

可以把一个变量强制转换成字符串类型(添加引号)(强制类型转换)

console.log(String(true));
console.log(String(false));
console.log(String(0));
console.log(String(100));

原理:

  • 对于Number Boolean String都会调用他们的toString()方法来将其转换为字符串。

  • 对于null值,直接转换为字符串"null"。对于undefined直接转换为字符串"undefined"。

方式三 任意的数据类型 +" "

任意的数据类型 +" "都会进行隐式的类型转换,结果为字符串。

var a = true;
a = a + "";

原理:和String()函数一样

字符串拼接

普通的加法运算符,两边出现字符串,会变成拼接。

console.log(true + 1); // 2
console.log(2 + 1); // 3
console.log(null + null); // 0

特殊情况 (面试题)

console.log(0.1 + 0.2); // 0.30000000000000004  
console.log(0.2 + 0.4); // 0.6000000000000001
console.log(0.2 + 0.3); // 0.5

因为IEEE754标准对于浮点数(小数float)产生的误差造成的

解决方式(转换成整数)

console.log((0.1 * 10 + 0.2 * 10) / 10); // 0.3

三. 转换为布尔值

方式一 使用Boolean()函数

可以把一个变量强制转换成布尔类型(强制类型转换)

// 以下结果全为:false
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
console.log(Boolean(false));

规律:数字非0即真,字符串非空即真。

转换的情况

转换前类型转换后
字符串除了空串其余全是true
数值除了0和NaN其余的全是true
null、undefined都是false
对象都是true

总结

  • 代表 空、否定的值 \color{red}{空、否定的值} 空、否定的值会被转换为false,如:’ '、0、NaN、null、undefined
  • 其余值都会转换为true

方式二 两次非运算

为任意的数据类型做两次非运算(隐式类型转换)

var a = "hello";
a = !!a; // true	
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值