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.mzph.cn/web/7005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【UnityRPG游戏制作】Unity_RPG项目之场景环境搭建和解析

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

事件知识图谱 - EventKGE_Event knowledge graph embedding with event causal transfer

EventKGE: Event knowledge graph embedding with event causal transfer 作者:Daiyi Li(南航) 来源:2023 Knowledge-Based Systems(中科院一区,影响因子8.8) 论文:[ScienceDirec…

开源聊天软件和 php版本的开源聊天软件的介绍

开源聊天软件 php 开源的PHP聊天软件有很多,这里我会列举几个常见的: Pidgin: 这是一个跨平台的即时消息客户端,它支持各种协议,包括XMPP协议。虽然它本身不是一个聊天软件,但它可以用来编写XMPP协议的聊天软件。 …

Linux中gcc/g++的使用

文章目录 前言gcc/g 前言 gcc和g即为编译器。其中gcc为c语言的编译器,只能编译c语言;g为c的编译器,既能编译c语言,又能编译c。 在前面的文章中,我们提到代码转换成可执行程序需要经过 预处理(进行宏替换)…

一、Vagrant搭建相关环境

目录 一、创建Vagrant相关环境1.下载安装VirtualBox2.在BlOS中设置CPU虚拟化3.使用Vagrant新建linux虚拟机3.1下载Vagrant3.2Vagrant官方镜像仓库3.3使用Vagrant初始化一个centos7的虚拟机 4.设置固定ip地址 二、安装docker1.按照docker 三、docker安装一些中间件1.mysql安装2.…

从零开始学AI绘画,万字Stable Diffusion终极教程(六)

【第6期】知识补充 欢迎来到SD的终极教程,这是我们的第六节课,也是最后一节课 这套课程分为六节课,会系统性的介绍sd的全部功能,让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 …

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下,创建普通用户并授权root权限需要以下步骤: 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户,其中username为你想要创建的用户名,可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…

Stylus的引入

Stylus是一个CSS预处理器,它允许开发者使用更高级的语法来编写CSS,并提供了一些额外的功能来简化和增强CSS的编写过程。以下是关于Stylus的详解和引入方法的详细介绍: 一、Stylus的详解 特点和功能: 变量:允许你定义…

【C++】vector类的增删改查模拟实现(图例超详细解析!!!)

目录 一、前言 二、源码引入 三、vector的模拟实现 ✨实现框架 ✨前情提要 ✨Member functions —— 成员函数 ⚡构造函数 ⭐无参构造 ⭐迭代器区间构造 ⭐n个值构造 ⚡拷贝构造 ⚡运算符赋值重载 ⚡析构函数 ✨Element access —— 元素访问 ⚡operator[ ] …

springcloud整合nacos实现相同版本实例相互调用

springcloud整合nacos实现相同版本实例相互调用 注: 本文为自己学习研究总结,仅供参考,若有侵权,请及时联系本人 业务场景 有时候一些新的业务或者修改后的功能只开放给部分人访问,那么可以新老版本都部署,对于大多…

[AHK V2]WinEvent - 简单的检测窗口打开关闭、移动、最大化、最小化等

WinEvent简介 WinEvent 可以监视所有窗口或特定窗口的窗口事件。目前支持以下事件:显示、创建、关闭、激活、非激活、移动、开始移动、结束移动、最小化、还原、最大化。有关详细信息,请参见库中函数的注释。 该库最新版可在Git Hub上获得。 WinEvent.a…

VsCode插件 -- Power Mode

一、安装插件 1. 首先在扩展市场里搜索 Power Mode 插件,如下图 二、配置插件 设置 点击小齿轮 打上勾 就可以了 第二种设置方法 1. 安装完成之后,使用快捷键 Ctrl Shift P 打开命令面板,在命令行中输入 settings.json , 选择首…

通过maven命令行mvn的方式,下载依赖jar包

目录 目标步骤执行mvn命令 目标 有时通过idea-maven-reload all maven projects更新项目依赖时,会报错Could not find artifact xxx.xx:xxx.x:xxx.jar (https://repo1.maven.org/maven2/org/)。 此时可尝试通过mvn命令行进行依赖下载(需要配置maven本地…

头歌java面向对象基础

第一关类的定义 package step1;// ---------------------Begin------------------------ public class Student{String name"李四";int age18;public void speak(){System.out.println("我爱学习");} }// ---------------------End----------------------…

【Linux】安装Python3.11报错

文章目录 问题解决 问题 在centos系统使用make命令安装python 3.11.8时&#xff0c;报错了&#xff1a; Python runtime state: initialized Traceback (most recent call last):File "/usr/local/Python-3.11.8/Lib/site.py", line 73, in <module> Fatal P…

【Python深度学习(第二版)(2)】深度学习之前:机器学习简史

文章目录 一. 深度学习的起源1. 概率建模--机器学习分类器2. 早期神经网络--反向传播算法的转折3. 核方法 -- 忽略神经网络4. 决策树、随机森林和梯度提升机5. 神经网络替代svm与决策树 二. 深度学习与机器学习有何不同 可以这样说&#xff0c;当前工业界所使用的大部分机器学习…

asp.net朱勇项目个人博客(3)

引文:按照书上的项目&#xff0c;我们最后实现管理端的三个增删改查的功能即可,相对与三个增删改查&#xff0c;文章&#xff0c;分类和留言&#xff0c;这里我们所需要用的的关联的一个表就是文章表&#xff0c;因为文章表每一个文章的增加显示和修改都需要对应的一个分类&…

【Linux】网络连接配置——nmcli工具配置连接增删改查实例

nmcli工具配置连接增删改查实例 &#xff08;一&#xff09;网络连接配置基本项目1.网络接口配置2.主机名配置3.DNS服务器配置 &#xff08;二&#xff09;网络连接配置文件&#xff08;三&#xff09;网络配置方法&#xff08;四&#xff09;nmcli工具配置连接管理1.增2.查3.改…

sql编写规范(word原件)

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。

Spring框架Aware接口的作用和应用

Aware&#xff0c;这是一个空接口&#xff0c;空接口又称标记接口。标记接口的作用是实现该接口的类都被标记具有某项功能。 一个超级标记接口&#xff0c;指示一个Bean有资格通过回调式方法被Spring容器通知某个特定框架对象。具体的方法签名由各个子接口确定&#xff0c;但通…