ES6 入门—ES6 解构赋值

步骤二:在终端里面输入以下命令:

node test1.js

我们会看到以下效果:

请添加图片描述

可忽略

let [x, , y] = [1, 2, 3];

// x = 1

// y = 3

实例

步骤一:新建一个名为 test2.js 的文件,在其中输入以下代码:

let [x, , y] = [1, 2, 3];

console.log(“x 的值为” + x);

console.log(“y 的值为” + y);

步骤二:在终端里面输入以下命令:

node test2.js

我们会看到以下效果:

请添加图片描述

剩余运算符

let [a, …b] = [1, 2, 3];

//a = 1

//b = [2, 3]

实例

步骤一:新建一个名为 test3.js 的文件,在其中输入以下代码:

let [a, …b] = [1, 2, 3];

console.log(“a 的值为” + a);

console.log(“b 的值为” + b);

步骤二:在终端里面输入以下命令:

node test3.js

我们会看到以下效果:

请添加图片描述

不完全解构

不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。

let [a = 1, b] = [];

// a = 1, b = undefined

如果解构不成功,变量的值就等于 undefined,示例代码:

步骤一:新建一个名为 test4.js 的文件,在其中输入以下代码:

let [a = 1, b] = [];

console.log(“a 的值为” + a);

console.log(“b 的值为” + b);

步骤二:在终端里面输入以下命令:

node test4.js

我们会看到以下效果:

请添加图片描述

解构默认值

let [a = 2] = [undefined];

console.log(“a 的值为” + a);

// a = 2

新建文件 demo.js 添加以上代码并在终端使用 node 命令运行:

请添加图片描述

当解构模式有匹配结果,且匹配结果是 undefined 时,会触发默认值作为返回结果。

let [a = 3, b = a] = [];

// a = 3, b = 3

let [c = 3, d = c] = [1];

// c = 1, d = 1

let [e = 3, f = e] = [1, 2];

// e = 1, f = 2

示例代码:

步骤一:新建一个名为 test5.js 的文件,在其中输入以下代码:

console.log(“示例一:”);

console.log(“a 与 b 匹配结果为 undefined,触发默认值:a = 3; b = a =3”);

let [a = 3, b = a] = [];

console.log(“a 的值为” + a);

console.log(“b 的值为” + b);

console.log(“示例二:”);

console.log(

“c 正常解构赋值,匹配结果:c = 1,d 匹配结果 undefined,触发默认值:d = c =1”

);

let [c = 3, d = c] = [1];

console.log(“c 的值为” + c);

console.log(“d 的值为” + d);

console.log(“示例三:”);

console.log(“e 与 f 正常解构赋值,匹配结果:e = 1,f = 2。”);

let [e = 3, f = e] = [1, 2];

console.log(“e 的值为” + e);

console.log(“f 的值为” + f);

在终端使用 node 命令运行:

请添加图片描述

二、对象的解构赋值

============================================================================

解构不仅可以用于数组,还可以用于对象。对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

let { foo, bar } = { foo: ‘aaa’, bar: ‘bbb’ };

// foo = ‘aaa’

// bar = ‘bbb’

let { baz : foo } = { baz : ‘ddd’ };

// foo = ‘ddd’

let person = { name: ‘zhangsan’, age: 20, sex: ‘男’};

let {name, age, sex} = person;

// name = ‘zhangsan’

// age = 20

// sex = ‘男’

示例代码:

步骤一:新建一个名为 test6.js 的文件,在其中输入以下代码:

console.log(“示例一:”);

console.log(

“等号左边的两个变量的次序,与等号右边两个同名属性的次序不一致,但是对取值完全没有影响。”

);

let { foo, bar } = { foo: “aaa”, bar: “bbb” };

console.log(“foo 的值为” + foo);

console.log(“bar 的值为” + bar);

console.log(“示例二:”);

let { baz: ccc } = { baz: “ddd” };

console.log(“ccc 的值为” + ccc);

console.log(“示例三:”);

let person = { name: “zhangsan”, age: 20, sex: “男” };

let { name, age, sex } = person;

console.log(“name :” + name);

console.log(“age :” + age);

console.log(“sex :” + sex);

在终端使用 node 命令运行:

请添加图片描述

下面这个例子的变量没有对应的同名属性,导致取不到值,最后等于 undefined。

var { baz } = { foo: “aaa”, bar: “bbb” };

// baz = undefined

新建 index.html 文件,示例代码:

显示效果:

请添加图片描述

如果变量名与属性名不一致,必须写成下面这样。

var { foo: baz } = { foo: ‘aaa’, bar: ‘bbb’ };

// baz = “aaa”

let obj = { first: ‘hello’, last: ‘world’ };

let { first: f, last: l } = obj;

// f = ‘hello’

// l = ‘world’

三、可嵌套可忽略

===========================================================================

和数组一样,解构也可以用于嵌套结构的对象。

let obj = {p: [‘hello’, {y: ‘world’}] };

let {p: [x, { y }] } = obj;

// x = ‘hello’

// y = ‘world’

let obj = {p: [‘hello’, {y: ‘world’}] };

let {p: [x, { }] } = obj;

// x = ‘hello’

示例代码一:

新建一个名为 index1.html 的文件,在其中输入以下代码:

显示效果:

请添加图片描述

示例代码二:

新建一个名为 index2.html 的文件,在其中输入以下代码:

显示效果:

请添加图片描述

下面是嵌套赋值的例子。

let obj = {};

let arr = [];

({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });

//obj = {prop:123}

//arr = [true]

四、解构默认值

==========================================================================

对象的解构也可以指定默认值。

let {a = 10, b = 5} = {a: 3};

// a = 3; b = 5;

let {c: aa = 10, d: bb = 5} = {c: 3};

// aa = 3; bb = 5;

var { message: msg = ‘Something went wrong’ } = {};

//msg = “Something went wrong”

示例代码:

步骤一:新建一个名为 test7.js 的文件,在其中输入以下代码:

console.log(“示例一:”);

let { a = 10, b = 5 } = { a: 3 };

console.log(“a 的值为” + a);

console.log(“b 的值为” + b);

console.log(“示例二:”);

let { c: aa = 10, d: bb = 5 } = { c: 3 };

console.log(“aa 的值为” + aa);

console.log(“bb 的值为” + bb);

console.log(“示例三:”);

var { message: msg = “Something went wrong” } = {};

console.log(“msg 的值为” + msg);

步骤二:在终端使用 node 命令运行:

请添加图片描述

五、不完全解构

==========================================================================

let obj = {p: [{y: ‘world’}] };

let {p: [{ y }, x ] } = obj;

// x = undefined

// y = ‘world’

示例代码:

步骤一:新建一个名为 test8.js 的文件,在其中输入以下代码:

let obj = { p: [{ y: “world” }] };

let {

p: [{ y }, x],

} = obj;

console.log(“x =” + x);

console.log(“y =” + y);

步骤二:在终端使用 node 命令运行:

请添加图片描述

六、剩余运算符

==========================================================================

let {a, b, …rest} = {a: 10, b: 20, c: 30, d: 40};

// a = 10

// b = 20

// rest = {c: 30, d: 40}

示例代码:

步骤一:新建一个名为 test9.js 的文件,在其中输入以下代码:

let { a, b, …rest } = { a: 10, b: 20, c: 30, d: 40 };

console.log(“a =” + a);

console.log(“b =” + b);

console.log(“rest =” + rest.c);

console.log(“rest =” + rest.d);

步骤二:在终端使用 node 命令运行:

请添加图片描述

七、注意事项

=========================================================================

如果要将一个已经声明的变量用于解构赋值,必须非常小心。

// 错误的写法

var x;

{x} = {x: 1};

// SyntaxError: syntax error

上面代码的写法会报错,因为 JavaScript 引擎会将 {x} 理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。

// 正确的写法

({x} = {x: 1});

上面代码将整个解构赋值语句,放在一个圆括号里面,就可以正确执行。关于圆括号与解构赋值的关系,如下。

解构赋值允许,等号左边的模式之中,不放置任何变量名。因此,可以写出非常古怪的赋值表达式。

({} = [true, false]);

({} = ‘abc’);

({} = []);

八、字符串的解构赋值

=============================================================================

在数组的解构中,解构的目标若为可遍历对象,皆可进行解构赋值。

字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。新建文件 index3.html ,示例代码:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

15441)]
[外链图片转存中…(img-s85wdenk-1712826615442)]
[外链图片转存中…(img-9AOmnF7z-1712826615442)]
[外链图片转存中…(img-uHkkUEeo-1712826615442)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-noE4vqej-1712826615443)]

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-2kjH9Dh0-1712826615443)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值