首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[分享]使用Number()转换数据类型

九秘Lv.1种子选手
2024-09-10 17:02:53
0
38

Number()是js中的内置方法,用于将其他类型转换为数字类型。

下面按照数据类型的划分,来看看转换的结果。

基本类型

  • String

如果字符串中包含非有效数字字符,则结果为NaN。

只有都是有效数字字符,才能转换为具体的数字。

如果是空字符串,则结果为0。

代码如下:

Number('123') // => 123
Number('1.23') // => 1.23
Number('123px') // => NaN
Number('1.2.3') // => NaN
Number('') // => 0
  • Boolean

true转换为1,false转换为0。

代码如下:

Number(true) // => 1
Number(false) // => 0
  • null

转换结果为0。

代码如下:

Number(null) // => 0
  • undefined

转换结果为NaN。

代码如下:

Number(undefined) // => NaN
  • Symbol

不能转换,会报错。

代码如下:

Number(Symbol(1)) // => TypeError: can't convert symbol to number

引用类型

引用类型的转换机制是:如果执行Number(a),那么被转换对象a先调用toString()方法,获取到结果b,然后再执行Number(b)

具体操作如下:

  • Object

  1. 普通对象

普通对象执行toString()方法后的结果为“[object Object]”,因此结果为NaN。

代码如下:

Number({a: 1}) // => NaN
  1. 数组对象

如果是空数组,则结果为0。

如果是一个以上元素,则结果为NaN。

如果只有一个元素,会有多种结果。

代码如下:

// 空数组
Number([]) // => 0

// 多个元素
Number(['1', '2']) // => NaN
Number([true, '2']) // => NaN

// 一个元素

// String
Number(['1']) // => 1
Number(['12.2']) // => 12.2
Number(['12.2px']) // => NaN
Number(['12.2.3']) // => NaN

// Boolean
Number([true]) // => NaN
Number([false]) // => NaN

// null
Number([null]) // => 0

// undefined
Number([undefined]) // => 0


// Symbol
Number([Symbol(1)]) // => TypeError: can't convert symbol to number
  1. 日期对象

转换时会调用日期对象的valueOf()方法获得毫秒数,再对此毫秒数转换。

代码如下:

Number(new Date()) // => 1657613985284 
Number(new Date('2011-03-05')) // => 1299283200000
  1. 正则对象

正则对象调用toString()方法后,会带有非有效数字字符,因此转换结果为NaN。

代码如下:

Number(new RegExp()) // => NaN
  1. Math对象

转换结果为对应的数字。

代码如下:

Number(Math.floor(1.23)) // => 1
  • Function

函数对象调用toString()方法后,会带有非有效数字字符,因此转换结果为NaN。

代码如下:

Number(function () {}) // => NaN
九秘
九秘

42 天前

签名 : 我常驻在>https://www.huaqu.club/ask   38       0
评论
站长交流