带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分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,前者会将参数转换为数值,再进行判断,后者不会强制转换参数类型。推荐使用后者。



目录
相关文章
|
监控 JavaScript
computed的使用
一、 computed是什么? 对于任何复杂逻辑,你都应当使用计算属性。 computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义. 然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理;
|
存储 JSON Ubuntu
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
Elasticsearch 是一款功能强大且功能丰富的搜索工具。本文将介绍一种小众的数据类型 Percolator ,同时介绍Percolate query的使用。 您需要基本了解 Elasticsearch,尤其是mapping和search。
7096 0
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
|
编解码
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
983 0
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
|
7月前
|
人工智能 程序员 iOS开发
一文彻底拿下HarmonyOS NEXT开发实战调试技巧
这是一篇关于HarmonyOS NEXT开发调试技巧的文章,作者是一名经验丰富的程序员Feri。内容涵盖三种调试方法:预览+日志方式(适合简单调试,需注意数据类型转换)、断点调试(详细介绍了设置步骤与功能键使用)以及hilog实战使用(日志打印限制为4096字节,推荐封装维护)。通过这些技巧,帮助开发者更高效地解决问题,提升编程能力。
226 14
一文彻底拿下HarmonyOS NEXT开发实战调试技巧
|
5月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
527 4
|
9月前
|
数据采集 存储 NoSQL
AArch64架构调用链性能数据采集原理
本次分享的主题是AArch64架构调用链性能数据采集原理,由阿里云苏轩楠分享。主要分为五个部分: 1. 术语解释 2. Frame Pointer RegisterStack Unwind 3. Dwarf-based Stack Unwind 4. /BRBE/CSRE Stack Unwind 5. Kernel-space Stack Unwind&eBPF Unwinders
215 0
|
机器学习/深度学习 人工智能 监控
YOLO的前世今生以及来龙去脉的背景介绍
YOLO的前世今生以及来龙去脉的背景介绍
|
Web App开发 缓存 搜索推荐
实用的Chrome浏览器命令
【5月更文挑战第6天】探索Chrome的隐藏命令行工具,提升浏览效率和解决问题。如`chrome://flags/`启用实验性功能,`chrome://net-internals/`进行网络诊断,`chrome://settings/content/`管理内容设置等。了解这些工具,可解决浏览器问题,优化隐私和性能,实现个性化设置。成为Chrome专家,让浏览体验更上一层楼。
487 0
|
Java API 应用服务中间件
Java一分钟之-JNDI:Java命名和目录接口
【6月更文挑战第3天】JNDI,Java Naming and Directory Interface,是Java的API,用于访问命名和目录服务。本文聚焦JNDI常见问题和易错点:1) 初始化Context时需正确配置环境属性;2) 查找资源时确保名称与服务器配置一致;3) 别忘了导入JNDI库和妥善处理异常;4) 使用后记得关闭资源。理解JNDI并避免这些问题能提升应用的可维护性和灵活性。
463 2