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
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值