Number数字类型详细解读

今天开始,连续五天,每天把JS各数据类型值讲一种

Number数字类型

Number数字类型包含:正数 / 负数 / 小数 / 零

Infinity 代指无穷大的值 例 var num=Infinity;

-Infinity 代指无穷小的值

NaN(not a number)不是一个有效数字,但它确属于number类型

  • var num = 10- ‘A’; NaN

  • NaN==NaN; false

NaN和NaN本身是不相等(它和任何都不相等)(可以理解为:“你不是人”那就不一定是什么了,范围太广,无法相等)

需求:验证一个值是否为有效数字?

isNaN("[value]"):检测一个值[value]是否为“非有效数字”,如果是“非有效数字”,返回true,反之返回false

如果[value]不是数字类型的值,需要把[value]值变为数字类型的值,再检测它是不是有效数字,过程当中,浏览器默认会把[value]转换为数字类型 “隐式转换(浏览器默认转换的)”

在“隐式转换”当中,浏览器是基于Number([value])实现数据类型转换的

Number([value])把其他数据类型转换为number数字类型
  • 字符串转换为数字:空字符串是0 如果字符串中出现任意一个非有效数字时,输出都是NaN!

    • null转换为数字:null->0
    • undefined转换为数字:undefined->NaN
  • 布尔转换为数字(布尔只有true和false):true->1 false->0

  • symbol不能转换为数字Number(Symbol()),报错(Uncaught TypeError: Cannot convert a Symbol value to a number).

  • bigint 可以转换为数字

  • 引用数据类型(对象或者函数)转换为数字:

    • 首先获取它的[Symbol.toPrimitive]属性值
    • 如果没有[Symbol.toPrimitive]属性值,其次获取它的valueOf 值(原始值)
    • 如果valueof得到的也不是原始值,最后把其转换为字符串 .toString(),然后再转换为数字 Number()

parseInt/parseFloat([value])把其他数据类型转换为数字类型

需要保证[value]是字符串

从字符串左侧第一个字符开始向右查找,把找到的有效数字字符,最后转换为数字(遇到一个非有效数字则停止查找,不论后面是否还有有效数字字符,都不再找了)

  • parseInt(“10px1314”)=>12

  • parseFloat(“10px1314”)=>12

  • parseInt(“10.5px”)=>12

  • parseFloat(“10.5px”)=>12.5

  • parseInt("")=>NaN

  • parseFloat("")=>NaN

  • Number("")=>0

如果一个有效数字字符都没有找到,结果是NaN

parseInt(“px12”)=>NaN

parseFloat(“px121314”)=>NaN

[number value].toFixed([N]):保留小数点后面N位

var n=3.141592653

  • n.toFixed(2)=>3.14
  • n.toFixed(3)=>3.142 四舍五入

[number value].toExponential

[number value].toPrecision

明天开始讲字符串数据类型

猜你喜欢

转载自blog.csdn.net/hanruo7532/article/details/111773784
今日推荐