JS中parseInt()和Number()区别!
parseInt()、Number()这两个函数用到最多的地方就是把一个字符串转换成数据类型,那么他们都有哪些区别?
首先我们看一下官方定义:
parseInt():parseInt()函数将给定的字符串以指定的基数解析为整数。parseInt(string,radix)第二个参数表示使用的进制,我们一般使用10进制,也可能会有到8或者16进制。为了避免对“0”和“0x”开头的字符串解析错误,各种 javascript 编程规范都规定必须要明确给出第二个参数的值,如 parseInt(“123”,10).
还有一点很重要:parseInt 从头解析 string 为整数,在遇到不能解析的字符时就返回已经解析的整数部分,如果第一个字符就不能解析,就直接返回NaN。
parseInt('16', 8) = 14 parseInt('10', 8) = 8 parseInt('16', 10) = 16 parseInt('10', 10) = 10 parseInt('16', 16) = 22 parseInt('10', 16) = 16
Number():在不用 new 操作符时,可以用来执行类型转换。如果无法转换为数字,就返回 NaN。如:'23aa'
区别:通过下面的实例就能明确看出了
// 当字符串是由数字组成的时候 他们转换的数字一样的没有差别 let numStr = '123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123 // 当字符串是由字母组成的时候 let numStr = 'abc' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //NaN // 当字符串是由数字和字母组成的时候 let numStr = '123a' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //NaN // 当字符串是由0和数字 let numStr = '0123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123 // **当字符串包含小数点** let numStr = '123.456' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123.456
// ** 当以数字开头的数字123aa **
let numStr = '123abc'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //NaN
// **当字符串为null时** let numStr = null console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0 // **当字符串为''(空)时** let numStr = '' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0
1、当字符串是由数字组成的时候 他们转换的数字一样的没有差别;如果字符串不含数字全是字母,这两个方法也都只是返回 NaN 结果;当字符串是由0和数字组成时,都是解析除0外的全部数字;
2、 当字符串是由数字和字母组成的时候 ①字母在开头,这两个方法也都只是返回 NaN 结果②字母不在开头 Number 方法返回NaN,pareseInt 方法返回字母之前的数据
3 、parseInt 对于非 String 类型的值要先转换为 String 类型再操作
分类:
【前端】javascript
, 【前端】vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通