ES6_02_变量解构赋值

向量数据库大模型云通信

点击 “前端自学社区” 查看更多精彩

picture.image

1

变量解构赋值

  
定义:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构  
  
这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。  
  
let [x, , y] = [1, 2, 3];  
x // 1  
y // 3  
  
let [head, ...tail] = [1, 2, 3, 4];  
head // 1  
tail // [2, 3, 4]  
  
let [x, y, ...z] = ['a'];  
x // "a"  
y // undefined      
z // []  
  
# 如果解构不成功,变量的值就等于undefined  

2

数组解构赋值

  
1. 解构赋值允许指定默认值。  
let [foo = true] = [];  
foo // true  
  
let [x, y = 'b'] = ['a']; // x='a', y='b'  
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'  

3

对象解构赋值

  
#定义: 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。  
  
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };  
foo // "aaa"  
bar // "bbb"  
  
let { baz } = { foo: 'aaa', bar: 'bbb' };  
baz // undefined  
  
  
# 注意  
1.对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量,然后这个变量就会拥有它的属性和方法  
// 例一  
let { log, sin, cos } = Math;  
  
// 例二  
const { log } = console;  
log('hello') // hello  
  
  
  
2. 变量名与属性名不一致,必须写成下面这样。(左边和右边不等时)  
  
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };  
baz // "aaa"  
  
let obj = { first: 'hello', last: 'world' };  
let { first: f, last: l } = obj;  
f // 'hello'  
l // 'world  
  
# 对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。  

4

解构默认值

  
#默认值生效的条件是,对象的属性值严格等于undefined。  
  
  
var {x = 3} = {x: undefined};  
x // 3  
  
var {x = 3} = {x: null};  
x // null  

5

字符串解构赋值

  
const [a, b, c, d, e] = 'hello';  
a // "h"  
b // "e"  
c // "l"  
d // "l"  
e // "o"  
  
  
let {length : len} = 'hello';  
len // 5  

6

解构注意

  
#解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。  
由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。

7

函数参数解构赋值

  
function add([x, y]){  
  return x + y;  
}  
  
add([1, 2]); // 3  
  
  
  
# 参数指定默认值  
function move({x = 0, y = 0} = {}) {  
  return [x, y];  
}  
  
move({x: 3, y: 8}); // [3, 8]  
move({x: 3}); // [3, 0]  
move({}); // [0, 0]  
move(); // [0, 0]  

8

解构用途

1)交换变量的值  
(2)从函数返回多个值  
(3)函数参数的定义  
(4)提取 JSON 数据  
(5)函数参数的默认值  
(6)遍历 Map 结构  
(7)输入模块的指定方法  
const { SourceMapConsumer, SourceNode } = require("source-map");  

原创不易,如果觉得不错的话,点个赞哟

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
如何利用云原生构建 AIGC 业务基石
AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC、PGC之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。而 AIGC 业务的部署也面临着异构资源管理、机器学习流程管理等问题,本次分享将和大家分享如何使用云原生技术构建 AIGC 业务。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论