数据类型的转换
注意1:js中遇到以0开始的"数字",会默认把其按照8进制转为10进制,然后再进行操作。
注意2:Symbol.toPrimitive,只会传入三个参数 分别是 number,string,default。
一、Number()
方法 | 结果 |
Number(" ") | 0 |
Number("1a") | NaN |
Number(true) | 1 |
Number(false) | 0 |
Number(null) | 0 |
Number(undefined) | NaN |
Number(symbol) | 报错 |
Number("对象") | 看以下介绍 |
Number() 把对象转换为数字 执行过程:
1.调用对象的 Symbol.toPrimitive 这个方法,如果不存在这个方法,继续执行以下方法。
2.调用对象的 valueOf 获取原始值,如果获取的值不是原始值,继续执行。
3.吊用对象的 toString 把其变为字符串。
4.把字符串基于Number方法,转换为数字。
二、parseInt(value, radix)
value:必须参数,必须为字符串,如果不是,要先隐式转换为字符串(String(参数))。
radix:代表进制,如果不写或者0,默认为10,有效值2~36之间,如果不在这个区间,结果直接是NaN。(特殊情况:如果字符串是以0x开始的,默认值为16)。
解析过程:
1.从 value 字符串左侧第一个字符开始查找,查找出符合 radix 进制的值(遇到不符合的则直接结束查找,不论后面是否还有符合的)
2.把找到的内容按照 radix 进制,转换为10进制。
大厂面试题:
let arr = [27.2,0,'0013','14px',123];
arr = arr.map(parseInt);
console.log(arr);
// 输出结果 [27, NaN, 1, 1, 27];
提示:map方法,第一个参数为item,第二个参数为索引值,这里的索引值变为了radix,从而得出的答案。
问:parseInt(0013,2)和parseInt("0013",2)的结果一样吗?分别是什么?
答:不一样,前者以0开头,默认把其按照8进制转为10进制,然后再进行计算。所以前者答案是 3 ,后者是1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)