1998wh

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  2 随笔 :: 0 文章 :: 0 评论 :: 97 阅读

数据类型的转换

注意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(valueradix)

  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。

 

 三、parseFloat(value)
  没有进制一说,可以识别小数点后一位,其他同上。
 
四、String()
  1.拿字符串包起来。
  2.String( { } )。(特殊情况)
 五、+'num'
  转换为数字。
posted on   杭州上城区彭于晏  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示