先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
正文
如果解构不成功,变量的值就等于 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 (备注前端)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-HLMDqcnt-1713664063560)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!