美文网首页
31.ES11-BigInt的使用和空值合并运算符和可选链和gl

31.ES11-BigInt的使用和空值合并运算符和可选链和gl

作者: 静昕妈妈芦培培 | 来源:发表于2022-02-15 09:50 被阅读0次

BigInt

  • 最大安全数字Number.Number.MAX_SAFE_INTEGER
  • 在早期的JavaScript中,我们不能正确的表示过大的数字:
  • 大于MAX_SAFE_INTEGER的数值,表示的可能是不正确的
console.log(Number.MAX_SAFE_INTEGER) //9007199254740991
console.log(Number.MAX_SAFE_INTEGER + 1) //9007199254740992
console.log(Number.MAX_SAFE_INTEGER + 2) //9007199254740992 计算并不正确
  • 那么ES11中,引入了新的数据类型BigInt,用于表示大的整数:
  • BitInt的表示方法是在数值的后面加上n
console.log(90071992547409901) //90071992547409900 输出错误
console.log(90071992547409901n) //90071992547409901n 大数输出正确

BigInt数据类型和Number类型数组进行运算,需要显示的统一类型

const bigNum = 90071992547409901n
const bigNum1 = 999n
const num = 10
console.log(bigNum + BigInt(num)) // 90071992547409911n

//把BigInt数据类型转换为Number类型
console.log(Number(bigNum1) + num) //1009

空值合并运算符??

ES11,Nullish Coalescing Operator增加了空值合并操作符

console.log(null ?? "aaa"); //aaa
console.log(undefined ?? "aaa"); //aaa
console.log(0 ?? "aaa"); //0
console.log("" ?? "aaa"); //
console.log(NaN ?? "aaa"); //NaN

从以上可以看出:只有在??前面的值为null或undefined时,才会使用默认值

const foo = undefined;
const res1 = foo ?? "aaa";
const res1 = foo || "aaa";

可选链?

  • 可选链也是ES11中新增一个特性,主要作用是让我们的代码在进行null和undefined判断时更加清晰和简洁:
  • 可选链前面的值如果是null或undefined,则不再执行后面的,之前返回可选链前面的值
const info = {
  name: 'why'
}

//ES11之前
if(info.friend && info.friend.girlFriend) {
  console.log(info.friend.girlFriend.name)
}

//使用可选链
console.log(info.friend?.girlFriend?.name) //undefined

globalThis

  • 在之前我们希望获取JavaScript环境的全局对象,不同的环境获取的方式是不一样的
  • 比如在浏览器中可以通过this、window来获取;
  • 比如在Node中我们需要通过global来获取;
  • 那么在ES11中对获取全局对象进行了统一的规范:globalThis
console.log(globalThis)

非常感谢王红元老师的深入JavaScript高级语法让我学习到很多 JavaScript 的知识

相关文章

  • 31.ES11-BigInt的使用和空值合并运算符和可选链和gl

    BigInt 最大安全数字Number.Number.MAX_SAFE_INTEGER 在早期的JavaScrip...

  • Swift 运算符

    合并空值运算符:?? 合并空值运算符(a ?? b) 如果可选项 a 有值则展开,如果没有值,是nil,则返回默认...

  • 合并空值运算符

    合并空值运算符 合并空值运算符(a ?? b):如果可选项 a 有值则展开,如果没有值,是nil,则返回默认值 b...

  • Optional:合并空值运算符

    合并空值运算符 合并空值运算符(a ?? b)如果可选项 a 有值则展开,如果没有值,是nil,则返回默认值 b...

  • 可选链和空值处理

    ES新特性[https://segmentfault.com/a/1190000039272641] 1. ES...

  • Swift中可选值判断 (强解包和??运算符)

    1. 强解包和?? 运算符来解决可选值的判断 2.if - let/var 使用if - let 判断可选值是否为...

  • node.js 14新特性

    1 Optional Chaining(可选链) 2 Nullish Coalescing(空值合并)逻辑或操作符...

  • 合并空值运算符

    合并空值运算符 a ?? b, 如果可选项a有值则展开,如果没有值,返回nil,则返回默认值b。 表达式a必须是一...

  • Swift 可选链

    可选链 可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 。如果可选项包含值,属性、方法或者下标...

  • 15.可选链

    可选链 可选值的缺点 使用可选值有时会让人感到有点笨拙,所有的解包和检查会变得如此繁重,以至于会让你想要 丢几个感...

网友评论

      本文标题:31.ES11-BigInt的使用和空值合并运算符和可选链和gl

      本文链接:https://www.haomeiwen.com/subject/fsoclrtx.html