typescript中的BigInt,展开运算符,解构和可选链运算

BigInt,展开运算符,解构和可选链运算

BigInt

javascript中支持两种数据类型, Number类型和BigInt类型。
JavaScript的七种原始数据类型,Undefined,Null,Boolean,String,Symbol,Number,BigInt
JavaScript使用双精度64位浮点数格式来表示Number类型的值,Number类型能够安全的表示最大的整数,该数值能够使用内置的number对象上的MAX_SAFE_INTEGER属性来表示,bigint类型能够表示任意精度的整数。

创建BigInt

  1. 使用BigInt字面量
const unit = 1n;
  1. 使用BigInt()函数
const unit = BigInt(1)

BigInt和Number

  1. 比较
    进行严格相等比较时,BigInt类型的值与Number类型的值永远不相等。进行非严格相等比较及大小关系比较时,BigInt类型的值与Number类型的值将进行数学意义上的比较
  2. 混合运算
// 类型错误,无法使用bigInt和其他类型
1 + 1n;

通过内置的Number()函数能够将BigInt类型的值强转为Number类型。但是会损失精度

Number(1n) // 1

展开运算符

可以使用在多种上下文中,比如对象字面量,数组字面量和函数调用语句中。...expression

展开数组字面量

数组字面量中的展开运算
符可以应用在任何可迭代对象,作用是将迭代产生的每个值插入数组字面量的指定位置

const firstHalfYearSeasons = ['Spring', 'Summer']
const seasons = [...firstHalfYearSeasons, 'fall','winter']
seasons // ["spring","summer","fall","winter"]

展开对象字面量

对象字面量中使用展开运算符,对象字面量中的展开运算符会将操作数的自身枚举属性复制到当前的对象字面量中

const point2d = {
    x: 0,
    y:0
}
const point3d = {
    ...point2d,
    z: 0,
}
point3d // {x: 0, y: 0, z: 0}

对象字面量可以仅由一个展开属性定义构成,这相当于对对象进行了复制操作。

展开函数参数

在调用一个函数时可以实际参数列表中使用展开运算符展开一个可迭代对象。它的作用是将迭代产生的每个值当成独立的实际参数传递给函数

const nums = [3, 1, 4];
const max = Math.max(...nums)
max; // 4

解构

构是指将数组或对象在结构上进行分解,将其拆分成为独立的子结构

数组解构

const point = [0, 1]
const [x, y] = point

对象结构

const point = {x: 0, y: 1}
const {x, y} = point

可选链运算符

当尝试访问对象属性时,如果对象的值为undefined或null,那么属性访问将产生错误。为了提高程序的健壮性,在访问对象属性时通常需要检查对象是否已经初始化,只有当对象不为undefined和null时才去访问对象的属性。

基础语法

可选的静态属性访问
obj?.prop
可选的计算属性访问
obj?.[expr]
可选的函数调用或者方法调用
fn?.()

短路求值

如果可选链运算符左侧操作数的求值结果为undefined或null,那么右侧的操作数不会再被求值,我们将这种行为称作短路求值

let x = 0
let a = undefined
a?.[++x]
x

空值合并运算符

当且仅当“??”运算符左侧操作数a的值为undefined或null时,返回右侧操作数b;否则,返回左侧操作数a。

a??b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604619.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#winfrom三层架构实现简单课程管理系统管理系统,三层架构实现增删改查

1. 项目展示 1.1登录展示 1.2添加课程信息展示 1.3课程信息管理-查询-修改-删除 1.4修改登录密码 2.项目功能介绍(图) 3.数据库设计 3.1 教师表设计 3.2 课程分类表 3.3 课程信息表 4. 创建样式界面 winfrom 超详细UI创建过程 实现双色球选号器UI界面…

在国企分公司做信息宣传新闻投稿的经验分享

作为一名国企分公司的信息宣传工作者,我亲历了从传统投稿方式到数字化转型的全过程,这段经历既充满了挑战,也收获了成长。回首最初的日子,那些用邮箱投稿的时光,至今仍让我感慨万千。 初尝辛酸,邮箱投稿的艰难岁月 刚接手信息宣传工作时,我满腔热情,却很快被现实的冷水浇了个透…

Blender材质,纹理,UV

1.材质Material,用于描述物体的表面性质,包含以下基本属性 -基础色 -金属/非金属 -粗糙度 -透光度 -凹凸细节 添加材质步骤: 1)切换到材质预览模式 2)打开材质面板 3)添加一个材质,包括材…

node.js对数据库mysql的连接与操作(增、删、改、查、五种SQL语法)

前提:先在vscode终端下载安装mysql:npm install mysql -save 步骤总结: (1)建立与数据库的连接 (2)做出请求: 实际上就是操作mysql里的数据。增删改查 insert、delete、updata、select (3)通过回调函数获取结果 一、什么是SQ…

spring高级篇(七)

1、异常处理 在DispatcherServlet中,doDispatch(HttpServletRequest request, HttpServletResponse response) 方法用于进行任务处理: 在捕获到异常后没有立刻进行处理,而是先用一个局部变量dispatchException进行记录,然后统一由…

ssm+vue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通…

字体设计_西文字体设计(英文字体设计)

一 西文字体设计基础知识 设计目标和历史成因 设计目标:让眼睛看着舒服的字体 那什么样的字体让眼睛看着舒服呢? 让眼睛看着舒服的字体造型其实是我们记忆里的手写体、自然造型。 所以就能理解西文字体为什么同一笔画,有的地方粗有的地方…

flowable一对并发网关跳转的分析

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

数字孪生项目的开发

数字孪生项目开发涉及多学科知识和技术,因此存在以下技术难点,数字孪生项目开发是一项复杂的工程,需要攻克多项技术难关。随着技术的不断发展,数字孪生技术将得到更加广泛的应用,并在各行各业发挥更大的作用。北京木奇…

C语言 函数的嵌套与递归 调用

本文 我们来说函数的嵌套调用和递归调用 在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数 函数并不允许嵌套调用,但是 允许在逻辑代码中嵌套调用 所谓函数嵌套调用 就是在一个函数中调用另一个函数,而…

双向BFS算法学习

双向BFS算法学习 推荐练习题 力扣“127”题:单词接龙 “752”题:打开轮盘锁 这里推荐一篇力扣题解 双向BFS 这里使用打开轮盘锁的题干进行举例: 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’,…

Django项目中的Nginx+uWSGI

Django项目中的NginxuWSGI部署 配合另一篇博客共同饮用Django项目服务器部署(2024最新) 一:Nginx uWSGI部署框架 用户浏览器向nginx发送请求,nginx判断请求是动态海事静态,如果是静态请求,则直接返回静态…

Redis系列-1 Redis介绍

背景: 本文介绍Redis相关知识,包括Redis的使用、单线程机制、事务、内存过期和淘汰机制。后续将在《Redis系列-2 Redis持久化机制》中介绍Redis基于RDB和AOF的持久化机制;在《Redis系列-3 Redis缓存问题》中介绍缓存击穿、缓存穿透、缓存雪崩…

快速排序(java细节实现)

目录 快速排序: Hoare版: 挖坑法 快速排序的优化 快速排序的非递归实现 小结 从小到大排序 快速排序: 基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值&…

C++:AVL树

概念: 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。 如图所示,搜索二叉树不能面对右边的树,这种极端的情况&#xf…

[iOS]从拾遗到Runtime(上)

[iOS]从拾遗到Runtime(上) 文章目录 [iOS]从拾遗到Runtime(上)写在前面名词介绍instance 实例对象class 类对象meta-class 元类对象为什么要有元类? runtimeMethod(objc_method)SEL(objc_selector)IMP 类缓存(objc_cache)Category(objc_category) 消息传递消息传递的…

【how2j JQuery部分】课后题答案及相关笔记

练习题 <script src"jquery.min.js"></script><script>$(function(){$(tr:odd).css({"background-color":"#f8f8f8"});}); </script> <style> table{border-collapse:collapse;width:90%;} tr{border-bottom-sty…

安捷伦E4991A美国原装二手KEYSIGHT、E4990A阻抗分析仪

商品品牌&#xff1a;安捷伦Agilent/是德KEYSIGHT 商品型号&#xff1a;E4990A 商品价格&#xff1a;面议或电议 商品详情&#xff1a; Agilent E4990A阻抗分析仪&#xff0c;20 Hz 至 10/20/30/50/120 MHz 主要特性与技术指标 5 种频率选件&#xff1b;20 Hz 至 10/20/30/50/1…

C++学习————第十天(string的基本使用)

1、string 对象类的常见构造 (constructor)函数名称 功能说明&#xff1a; string() &#xff08;重点&#xff09; 构造空的string类对象&#xff0c;即空字符串 string(const char* s) &#xff08;重点&#xff09;…

Java_从入门到JavaEE_11

一、抽象类及抽象方法 1.认识抽象类及抽象方法 应用场景&#xff1a;当一个方法必须在父类中出现&#xff0c;但是这个方法又不好实现&#xff0c;就把该方法变成抽象方法&#xff0c;交给非抽象的子类去实现 实例&#xff1a; //抽象类 public abstract class 类名{//抽象方…
最新文章