稀土掘金 稀土掘金

Number()和parseInt()、parseFloat()的区别

三者的作用:把其他数据类型转换成数字

区别:Number() 可以用于任何数据类型转换成数值;parseInt() 用于将字符串转换成数值

parseInt()parseFloat() 这两者的区别就是整数浮点数的区别,所以本文将只比较Number()parseInt()

一、Number()

  1. Boolean值,true 转换成 1, false 转换成 0;

  2. null,返回0;

  3. undefined, 返回NaN;

  4. 如果是字符串:

    • 字符串只包含数据时,将转换成十进制的数值,第一个数字是0的话,将会忽略,如:Number('0123') -> 123

    • 字符串包含有效的浮点数,如“1.1”,将转换成对应的浮点数,如:Number('01.1') -> 1.1

    • 字符串包含有效的十六进制格式,如“0xf”,将转换成相同大小的十进制数值,如:Number('0xf') -> 15

    • 字符串为空,转换成0,如:Number('') -> 0

    • 字符串包含了除上面这几种格式外的字符,将转换成NaN,如:Number('123x') -> NaN

  5. 如果是对象,则调用对象的ValueOf()方法,然后依照前面的规则转换返回的值;如果转换的结果是NaN,则调用的对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

二、parseInt()

只能将字符串转换成数值;与 Number()转字符串的区别是:

  1. 字符串数字开头或者负号开头,往后取值,直到非数字停止,如:parseInt('123x') -> 123parseInt('-023x') -> -23,注意:parseInt('-0a') -> -0parseInt('-0x') -> NaN(0x为十六进制数的开头)、parseInt('-abc') -> NaN

  2. 字符串非数字或者负号开头,则为NaN,如:parseInt('x123') -> NaN

  3. 空字符串,返回NaN, 如:parseInt('') -> NaN

  4. parseInt('1.1') -> 1 这也是它和 parseFloat() 的差别。

Number() 和 parseInt() 对比的一张表

Number()parseInt()
''0NaN
true/false1/0NaN
'0123'123123
'123x'NaN123
'x123'NaNNaN
'01.1'1.11

parseInt() 还有第二个参数

第二个参数用于指定转换时,转换成多少进制(如2进制、8进制、10进制、16进制 等等),默认为10进制。

parseInt('-023x', 8) // -19

parseInt('010', 10) // 10

parseInt('010', 8) // 8

parseInt('0x10',10) // 0

parseInt('0x10',16) // 16

parseInt('0xf', 16) // 15

说到这第二个参数,有一个非常经典的面试题:


['1', '2', '3'].map(parseInt) // 会得到什么结果???

如果你不假思索的写出了 [1, 2, 3],那你的面试可能就会Game Over了。

为什么???

正确答案应该是 [1, NaN, NaN]... 原因就出在parseInt()的第二个参数身上:

然而,map的语法又是这样的:

['1', '2', '3'].map(parseInt),其实拆解出来就是: ['1', '2', '3'].map((currentValue, index) => parseInt(currentValue, index))

三个值转换相当于:parseInt('1', 0)parseInt('2', 1)parseInt('3', 2)

  1. parseInt('1', 0) 第二个参数为0,相当的没传,即默认值,也就是10进制,正确转换成1;
  2. parseInt('2', 1) 第二参数不合法,看文档,第二个参数是2-36的值,如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN
  3. parseInt('3', 2) 参数合法,但是,2进制里没有3这个数字,所以返回NaN

玻璃钢生产厂家无锡镜面玻璃钢雕塑品牌企业临汾玻璃钢人物雕塑厂家直销玻璃钢雕塑奥体秋季商场美陈温州玻璃钢雕塑商家玻璃钢雕塑狗东莞人物玻璃钢雕塑中山贴马赛克玻璃钢雕塑滁州定制玻璃钢雕塑价位河北省玻璃钢雕塑厂家供应铜陵商场美陈布展玻璃钢雕塑定做厂家报价山东仿铜孔子玻璃钢雕塑厂家道县玻璃钢造型雕塑花都玻璃钢人物雕塑来图定制商场情人节美陈创意设计玻璃钢雕塑安装过程运城玻璃钢浮雕景观雕塑公司宜春公园玻璃钢雕塑西安玻璃钢智能雕塑宜春公园玻璃钢雕塑制作小品玻璃钢卡通雕塑供应商保山市玻璃钢雕塑设计要多少钱商场美陈鉴赏贵阳景区玻璃钢雕塑批发开封景观玻璃钢人物雕塑定制镜面不锈钢玻璃钢雕塑报价夏邑定做玻璃钢雕塑厂选哪家深圳自发光动物玻璃钢雕塑生产商玻璃钢镂空不锈钢雕塑公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化