当前位置: 首页 > ops >正文

JavaScript 数据结构详解

最近在复习JavaScript的基础知识,和第一次学确实有了很不一样的感受,第一次学的比较浅,但是回头再进行学习的时候,发现有很多遗漏的东西,所以今天想分享一下新学到的知识,后面会一点一点补充更新

JavaScript的数据结构有8个,分别是number string boolean object undefined null 还有es6新增的symbol和bigint,今天主要分享一下null undefined number,其他的等复习完会及时更新的

null:

null是一个独立的数据类型,表示一个空值或者是一个对象没有值

null有几个特殊的用法,操作如下:

1.当使用Number方法来识别null的时候,输出为0

 console.log(Number(null))  //0

2.对null实现一些运算符操作(可以将null当做0来进行计算)

 console.log(2 + null) //2console.log(2 * null) //0

undefined:

undefined比较特殊,表示未定义,比如你在生命一个变量,但是没给他赋值的时候,然后检测该变量的类型,输出就是undefined

 let aconsole.log(a) //undefined

 1.当使用Number方法来识别undefined的时候,输出为NaN

console.log(Number(undefined)) //NaN

2.对undefined实现一些运算符操作(可以将undefined当做没有值来进行计算)

 console.log(undefined + 2) //NaNconsole.log(undefined * 2) //NaN

 3.当使用undefined和null来进行比较的时候,非严格模式下,两者是相等的

console.log(null == undefined) //true
console.log(null === undefined) //false

number:

number是用来表示整数和浮点数已经NaN的数据类型,JavaScript的底层没有整数

1.所有的数字都是使用64位浮点数来进行存储

console.log(1 === 1.0) //true

2.当小数在进行相加的时候,具有误差

console.log((0.3 - 0.2) === 0.1) //false

3.当一个计算的数大于2的53次方,计算就不准确了

console.log(Math.pow(2, 53) === Math.pow(2, 53) + 1) //true

4.当一个数大于2的1024次方,就会溢出,如果小于2的-1075次方,会溢出为0

console.log(Math.pow(2, 1024)) //Infinity
console.log(Math.pow(2, -1075) ) //0

5.+0和-0

在很多情况下+0和-0是一样的,但是只有当他们表示分母的时候,会有不一样的结果

console.log(+0 === -0) //true
console.log(1 / +0 === 1 / -0) //false

6.NaN表示number类型,当对NaN进行幂运算的时候,输出为1,其他情况下都为NaN

console.log(NaN ** 0) //1

7.进制

十进制表示没有前导0的数值,二进制前缀(0b/0B),八进制前缀(0o/0O),十六进制前缀(0x/0X),

特殊情况:

 有前导0的数值会被视为八进制,但是如果前导0后面有数字8和9,则该数值被视为十进制。

console.log(099) //99
console.log(088) //88
console.log(077) //63

 8.infinity运算

1. 范围:Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。

console.log(Infinity > -100) //true
console.log(-Infinity < -100) //false
console.log(Infinity > NaN) //false
console.log(-Infinity < NaN) //false

2. Infinity与undefined计算,返回的都是NaN。

console.log(Infinity + undefined) //NaN
console.log(Infinity - undefined) //NaN
console.log(Infinity * undefined) //NaN
console.log(Infinity / undefined) //NaN

3. Infinity减去或除以Infinity,得到NaN。

console.log(Infinity - Infinity) //NaN
console.log(Infinity / Infinity) //NaN

4.0乘以Infinity,返回NaN;0除以Infinity,返回0;Infinity除以0,返回Infinity。

console.log(0 * Infinity) //NaN
console.log(0 / Infinity) //0
console.log(Infinity / 0) //Infinity

5.Infinity与null计算时,null会转成0,等同于与0的计算。只用相乘的时候,返回NaN

console.log(Infinity + null) //Infinity
console.log(Infinity - null) //Infinity
console.log(Infinity * null) //NaN
console.log(Infinity / null) //Infinity

更新中......

http://www.xdnf.cn/news/14305.html

相关文章:

  • Java垃圾回收机制
  • [NLP]课程期末知识点总结
  • [windows工具]PDFOCR识别导出Excel工具1.1版本使用教程及注意事项
  • 【JVM】- 类加载与字节码结构3
  • 性能优化 - 高级进阶:JVM 常见优化参数
  • Linux内核网络协议的双重注册机制:inet_add_protocol与inet_register_protosw深度解析
  • Python小酷库系列:Python中的JSON工具库(3)
  • 行为设计模式之State(状态)设计模式
  • java中常见的排序算法设计介绍
  • IDEA21中文乱码解决办法
  • ubuntu 22.04设置时区和24小时制显示——筑梦之路
  • 【详细】CUDA开发学习教程清单
  • 【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!
  • Arcgis中,toolbox工具箱中工具莫名报错的解决方法
  • 【速写】policy与reward分词器冲突问题(附XAI阅读推荐)
  • LeetCode--31.下一个排列
  • 行为设计模式之Strategy(策略)
  • 网络编程(HTTP协议)
  • ShenNiusModularity项目源码学习(34:总结)
  • C/C++数据结构之漫谈
  • React-router、React-router-dom、React-router-native之间的区别
  • 基于深度强化学习的智能机器人路径规划系统:技术与实践
  • Flutter 本地存储全面指南:从基础到高级实践
  • CMake实战:qmake转cmake神器 - pro2cmake.py
  • 【图像处理入门】7. 特征描述子:从LBP到HOG的特征提取之道
  • 智慧金融——解读DeepSeek在银行业务场景的应用【附全文阅读】
  • Kotlin实现文件上传进度监听:RequestBody封装详解
  • Vue 性能优化
  • Flink与Kubernetes集成
  • 数据库相关操作