ES6 入门—ES6 解构赋值,2024年最新今日头条前端社招面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

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

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

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

如果解构不成功,变量的值就等于 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 ,示例代码:

文末

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

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

转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-HLMDqcnt-1713664063560)]

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

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值