步骤二:在终端里面输入以下命令:
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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。
也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。
面试准备
面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
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)]