【JS】复习和学习几个好用的js小知识
创始人
2024-01-21 14:30:07
0

目录

  • ?.
  • ??
    • ??=
  • **
    • **=
  • arr.at
  • arr.fill
  • arr.flat


?.

可选链运算符

作用:深度调用,类似于a.b中的.,但是区别在于当a为undefined或者null时,

链式结果并不会报错,而是返回undefined

a?.b 就可以理解为:
先对?.前面的a做个判断,a存在吗?
如果存在,就返回a.b
如果不存在,就返回undefined

举例:

var obj1 = { a: { b: 1 } };
console.log(obj1.a?.b); // 1var obj2 = null;
console.log(obj2?.a) // undefined

可参考链式文档加深理解:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining

??

空值合并运算符

语法:a ?? b

作用:选取a或者b中不是null或undefined的值作为结果

表达式的结果:

1.如果a不是null也不是undefined,就返回a;2.如果a是null或者undefined,而b不是null也不是undefined,就返回b;3.如果a和b都是null和undefined中的一个,就返回undefined

示例:

0 ?? 1 // 0
'' ?? 1 // ''
1 ?? 2 // 1
null ?? 1 // 1
undefined ?? 2 // 2
null ?? undefined // undefined
undefined ?? null // undefined

查看官方文档,深入了解:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing

??=

逻辑空赋值

语法:x ??= y 当x为nullundefined时,把y的值赋给x;否则x的值不变

(如果此时b也是null或者undefined,x的结果就是undefined)。

示例:

var x = 0;
var y = 1;
x ??= y;
console.log(x) // 0
var a = null;
var b = 1;
a ??= b;
console.log(a); // 1

查看文档,深入了解:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment

**

求幂

语法:a ** b,即a的b次方。类似于Math.pow(a, b)

它更强大的地方在于可以接受BigInts类型的数据。

示例:

2 ** 3 // 8
3 ** 2 // 9
2 ** 2 ** 3 // 256
2 ** (2 ** 3) // 256
(2 ** 2) ** 3 // 64 
- 2 ** 2 // Error: Unary operator used immediately before ...
- (2 ** 2) // -4
(-2) ** 2 // 4

通过示例可以得知,在使用时有两点需要特别注意的地方:

1. 2 ** 2 ** 3和2 ** (2 ** 3)是相等的,但是和(2 ** 2) ** 3不相等。
这意味着求幂运算是右结合的
2. 求幂运算前面不能直接写负号,不然会报语法错误
原因是在不同语言中,负号的计算优先级是不同的,
在js中,为避免语法混乱,这种写法被定义为非法的。

**=

顺便提下对应的幂等操作,**=

var a = 3
a **= 2;
console.log(a); // 9

arr.at

用于获取某个下标对应的值

作用和arr[index]相似,但是它的作用更强大。

因为它的参数可以是负数。

示例:

var arr = [5, 12, 8, 130, 44];
console.log(arr[-1]); // undefined
console.log(arr.at(-1)); // 44

arr.fill

用于填充数组内的元素会改变原数组

语法:arr.fill(item, start, end)

item是要填充的元素start是开始填充的下标,默认从0开始end是结束位置的下标,不含。默认是arr.length

示例:

var arr = new Array(3).fill(1);
console.log(arr); // [1, 1, 1]
var arr = [1, 2, 3, 4]
arr.fill('a', 2, 4);
console.log(arr); // [1, 2, 'a', 'a']

arr.flat

用于拉平数组,就是将多重数组去掉多少层返回一个新数组

语法:arr.flat(number)

如果参数是Infinity,就可以将多维数组拉平为一维数组。

示例:

var arr = [0, 1, 2, [[[[3, 4]]]]];
var arr1 = arr.flat(Infinity);
console.log(arr1); // [0, 1, 2, 3, 4]

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...