JavaScript的各种类型转换和转换规则大全

772 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文同时参与 「掘力星计划」,赢取创作大礼包,挑战创作激励金

开发过程中,我们常常会遇到当前获取到的值并不是我们期望的类型,这个时候我们就需要将手动的去做一个类型转换。转换的方法不止一种,所以你一般用的都是哪种?为什么?

提问

PS:答案都在文中

👉 String(null) 和 (null).toString() 的结果?

👉 1.toSting()和(1).toString()结果为什么不一样?

👉 parseFloat("123.45.67") 和 Number("123.45.67")的结果?

👉 相关内容:JavaScript的7大类型补缺补漏


JS其他类型转为字符串

显示转化String(value)

String(value)函数可以将任何类型的数值转换为字符串,包括null和undefined

let value = true;
console.log(typeof value); // boolean

value = String(value); // 现在,值是一个字符串形式的 "true"
console.log(typeof value); // string

toString()方法

toString()方法返回的是相应值的字符串表现

let value = true;
value = value.toString(); // 字符串 "true"

数值、布尔值、对象和字符串值都有toString()方法,但是null和undefined值没有这个方法,会直接报错

PS:如果是数值,直接点toString()方法会报错!

image-20211017114815629

原因:JavaScript的解释器把数字后的"."偷走了(作为前面数字的小数点), 类似于下面的操作:

image-20211017115000130

利用+“”

把转换的值与一个字符串 “” 加在一起

image-20211017115135234


JS其他类型转为数字类型

显示转化Number(value)

可以用于任何数据类型转换成数值

let str = "123";
console.log(typeof str); // string

let num = Number(str); // 变成 number 类型 123
console.log(typeof num); // number

number 类型转换规则:

转换为number类型的结果
undefinedNaN
null0
true 和 false1和0
string去掉首尾空格后的纯数字字符串中含有的数字。
👉 如果剩余字符串为空,则转换结果为 0
👉否则,将会从剩余字符串中“读取”数字。
👉当类型转换出现 error 时返回 NaN
// 123
console.log( Number("   123   ") ); 

 // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
console.log( Number("123z") );     

转换函数parseInt()和parseFloat()

js提供了parseInt()和parseFloat()两个转换函数。专门用于把字符串转换成数值。

  • parseInt() 把值转换成整数

    console.log(parseInt("Axjy01"))  //NaN
    console.log(parseInt("01Axjy"))  //1
    

    image-20211017131249637

  • parseFloat() 把值转换成浮点数

parseFloat("123.4567")  //123.4567
parseFloat("123..4567")  //123
parseFloat("qwer123.4567")  //NaN
parseFloat("123.45.67")  //123.45

🍒从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字;

🍍第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的

利用js变量弱类型转换(不推荐)

在算术函数和表达式中,会自动进行 number 类型转换。

比如,当把除法 / 用于非 number 类型

// 3, string 类型的值被自动转换成 number 类型后进行计算
console.log( "6" / "2" ); 

有人会利用这个特性来做转数字的操作,比如减0(不推荐)

var str= '012.345 ';
console.log(typeof str); // string

str = str-0; // 变成 number 类型了
console.log(typeof str); // number

布尔型转换

显示转换Boolean(value)

boolean类型转换规则:

转换为boolean类型的结果
0, null, undefined, NaN, ""false
其他值true

注:

console.log( Boolean(0) ); // false
console.log( Boolean("0") ); // true

console.log( Boolean("") ); // false
console.log( Boolean(" ") ); // 空白,也是 true(任何非空字符串都是 true

结语

文章会持续更新,优化,以及重构!

参考资料:Type Conversions



🎨【点赞】【关注】不迷路,更多前端干货等你解锁

往期推荐

👉 来看看最新版的谷歌浏览器开发者工具都更新了些什么?

👉 layui镜像合集+怎么把人家整个网站拷贝下来的

👉 JavaScript的7大类型补缺补漏

👉 HTTP备忘录 | 常用状态码&请求头&响应头&Cookies及请求方法合集