带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型②

简介: 带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型②

写在前头

大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。


注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。


思维导图

微信截图_20221111182217.png


脉络

这小节就是介绍了3.4数据类型中的3.4.5Number类型的3.值的范围,4.NaN。


3.4数据类型

微信截图_20221111182225.png


3.4.5Number类型

微信截图_20221111182234.png


3.值的范围

微信截图_20221111182242.png


  1. 原因

存储数据需要内存,因此ECMAScript 并不支持表示这个世界上的所有数值(内存限制)。


  1. Number.MIN_VALUE

用于存储ES可以表示的最小值


  1. Number.MAX_VALUE

用于存储ES可以表示的最大值


  1. 自动转换
  • 数值结果超出范围

数值超出js可以表示的范围,那么js就会将数值转换为可以表示的数值。例如正无穷,负无穷。

  • 特殊的 Infinity(无穷)值


①表示无法表示的正负数 无法表示的正数:Infinity 无法表示的负数:-Infinity

  • 计算返回正 Infinity 或负 Infinity

当计算时返回无穷值时,那么就不用再继续进行后续计算了,原因:Infinity 没有可用于计算的数值表示形式。

  • isFinite()函数

这个函数用于验证一个数是否可以由js表示(在最大数和最小数之间)。

const result1 = Number.MAX_VALUE + 1;
console.log(isFinite(result1)); // true
const result2 = Number.MAX_VALUE + Number.MAX_VALUE ;
console.log(isFinite(result2)); // false
复制代码


为什么result1可以输出true? 这证明js可以表示他,不用转换为无穷大,但是明确知道他比Number.MAX_VALUE大了呀?


原因: IEEE 754 标准规定: 只有大于等于

微信截图_20221111182558.png

的数才会被 round 到 Infinity. 而 Number.MAX_VALUE 才是

微信截图_20221111182606.png

, 加上 1 还远远不到 Infinity.


  • 监测计算结果是否超出范围

当使用很大或者很小的数字时,我们最好使用 isFinite()函数 检查一下,计算结果是否超出范围。


  1. 使用 Number.NEGATIVE_INFINITY 和 Number.POSITIVE_INFINITY

这2个属性的值正好对应Infinity和-Infinity。


4.NaN

微信截图_20221111182254.png


  1. 含义,作用

含义:就是表示不是一个数。

作用:用于表示本来要返回数值的操作失败了(而不是抛出错误)。比如因为某些原因计算终止。


  1. 除法
  • 分子为0

分子分母都包含0,不论正反,均为NaN。

  • 分子不为0,分母为0

分子不为0,那么根据符号判断是Infinity或-Infinity。


  1. 属性
  • 操作始终返回 NaN

①任何涉及 NaN 的操作始终返回 NaN(如 NaN/10)(书上原话)。

  • NaN 不等于包括 NaN 在内的任何值 (使用比较运算符用于是false)
console.log(NaN === NaN); // false
复制代码


  • 判断一个值是不是 NaN

①isNaN()函数

②Number.isNaN()

2者都是判断一个值是不是 NaN,前者会将参数转换为数值,再进行判断,后者不会强制转换参数类型。推荐使用后者。



目录
相关文章
|
12月前
|
Go
第76/90步《番外篇》第4章 Go语言三:复合数据类型 第31课
今天学习《番外篇》第4章 Go语言三:复合数据类型 第31课 切片
49 0
|
12月前
|
安全 Go
第79/90步《番外篇》第4章 Go语言三:复合数据类型 第34课
今天学习《番外篇》第4章 Go语言三:复合数据类型 第34课 指针与错误
45 0
|
12月前
|
Go
第75/90步《番外篇》第4章 Go语言三:复合数据类型 第30课
今天学习《番外篇》第4章 Go语言三:复合数据类型 第30课 数组
40 0
|
前端开发 JavaScript
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
71 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
|
存储 机器学习/深度学习 前端开发
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
64 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
|
JavaScript 前端开发 开发者
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分 Object 类型
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分 Object 类型
66 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分 Object 类型
|
自然语言处理 前端开发 JavaScript
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分String 类型
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分String 类型
69 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分String 类型
|
存储 前端开发 JavaScript
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符②
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符②
69 0
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符②
|
前端开发
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符③
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符③
48 0
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符③
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符④
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符④
66 0
带你读书之“红宝书”:第三章 语法基础(中)之 3.5操作符④