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

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战

写在前头

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

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

思维导图

3.语法基础(1).png

脉络

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

3.4数据类型

image.png

3.4.5Number类型

image.png

3.值的范围

image.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 标准规定: 只有大于等于

[公式]

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

[公式]

, 加上 1 还远远不到 Infinity.

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

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

  1. 使用 Number.NEGATIVE_INFINITY 和 Number.POSITIVE_INFINITY

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

4.NaN

image.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,前者会将参数转换为数值,再进行判断,后者不会强制转换参数类型。推荐使用后者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值