都2024年了,再不学ES6你就out了 —— 一文搞懂ES6_net6 支持es6吗(1)

// 3. 有块级作用域
function fn2(){
for(let i = 0; i < 5; i++){
// do something
}
// 此处会报错,无法打印,防止红杏出墙!!!
// i是定义在循环体之内的,循环体外当然无法打印
console.log(i);
}
fn2();



> 
> **const**
> 
> 
> 


* const 声明一个只读的常量,一旦声明,常量的值就不能改变
* 一般用于全局变量
* 通常变量名全部大写(请按照规则来,不要乱搞,容易出事情)



const PI = “3.1415926”;


### 2. 解构赋值


* 解构赋值是对赋值运算符的扩展
* 针对数组或者对象进行模式匹配,然后对其中的变量进行赋值
* 代码简洁且易读,语义更加清晰明了,方便了复杂对象中数据字段获取(**简而言之:用起来很爽!**)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210530114110867.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1OTQyMzQ4,size_16,color_FFFFFF,t_70)



> 
> **2.1 用在数组上**
> 
> 
> 



let [a, b, c] = [1, 2, 3];
// a = 1,b = 2,c = 3 相当于重新定义了变量a,b,c,取值也更加方便

// , = 占位符
let arr = [“小明”, “小花”, “小鱼”, “小猪”];
let [,one] = arr; // 这里会取到小鱼

// 解构整个数组
let strArr = […arr];
// 得到整个数组
console.log(strArr);



> 
> **2.2 用在对象上**
> 
> 
> 



let obj = {
className : “卡西诺”,
age: 18
}
let {className} = obj; // 得到卡西诺
let {age} = obj; // 得到18

// 剩余运算符
let {a, b, …demo} = {a: 1, b: 2, c: 3, d: 4};
// a = 1
// b = 2
// demo = {c: 3, d: 4}


### 3. 模板字符串


* 模板字符串相当于**加强版的字符串**,用反引号 ``
* 除了作为普通字符串,还可以用来定义多行字符串,可以在字符串中加入变量和表达式



> 
> **3.1 普通字符串**
> 
> 
> 



// 普通字符串
let string = “hello”+“小兄弟”; // hello小兄弟
// 如果想要换行
let string = “hello’\n’小兄弟”
// hello
// 小兄弟



> 
> **3.2 模板字符串**
> 
> 
> 



let str1 = “穿堂而过的”;
let str2 = “风”;
// 模板字符串
let newStr = 我是${str1}${str2};
// 我是穿堂而过的风
console.log(newStr)

// 字符串中调用方法
function fn3(){
return “帅的不行!”;
}
let string2= 我真是${fn3 ()};
console.log(string2); // 我真是帅的不行!


### 4. ES6 函数(升级后更爽)



> 
> **4.1 箭头函数**
> 
> 
> 


* 箭头函数是一种更加简洁的函数书写方式
* **箭头函数本身没有作用域(无this)**
* 箭头函数的this指向上一层,**上下文决定其this**
* 基本语法:参数 => 函数体


**a. 基本用法**



let fn = v => v;
//等价于
let fn = function(num){
return num;
}
fn(100); // 输出100


**b. 带参数的写法**



let fn2 = (num1,num2) => {
let result = num1 + num2;
return result;
}
fn2(3,2); // 输出5


**c. 箭头函数中的this指向问题**


* 箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。在函数定义的时候就已经决定了



function fn3(){
setTimeout(()=>{
// 定义时,this 绑定的是 fn3 中的 this 对象
console.log(this.a);
},0)
}
var a = 10;
// fn3 的 this 对象为 {a: 10},因为它指向全局: window.a
fn3.call({a: 18}); // 改变this指向,此时 a = 18


**d. 箭头函数适用的场景**


* 当我们代码里存在这样的代码:let self = this;
* 需要新建变量去保存this的时候
* 案例如下:



let Person1 = {
‘age’: 18,
‘sayHello’: function () {
setTimeout(()=>{
console.log(this.age);
});
}
};
var age = 20;
Person1.sayHello(); // 18



> 
> **4.2 函数参数的扩展**
> 
> 
> 


**1. 默认参数**



// num为默认参数,如果不传,则默认为10
function fn(type, num=10){
console.log(type, num);
}
fn(1); // 打印 1,10
fn(1,2); // 打印 1,2 (此值会覆盖默认参数10)


* 需要注意的是:**只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递**。


**2. 不定参数**



// 此处的values是不定的,且无论你传多少个
function f(…values){
console.log(values.length);
}
f(1,2); // 2
f(1,2,3,4); // 4


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210531222239469.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1OTQyMzQ4,size_16,color_FFFFFF,t_70)


### 5. Class类


* class (类)作为对象的模板被引入,可以通过 class 关键字定义类
* class 的本质是 function,同样可以看成**一个块**
* 可以看作一个语法糖,让**对象原型的写法更加清晰**
* 更加标准的**面向对象编程**语法



> 
> **5.1 类的定义**
> 
> 
> 



// 匿名类
let Demo = class {
constructor(a) {
this.a = a;
}
}
// 命名类
let Demo = class Demo {
constructor(a) {
this.a = a;
}
}



> 
> **5.2 类的声明**
> 
> 
> 



class Demo {
constructor(a) {
this.a = a;
}
}


* 请注意,类不能重复声明
* 类定义不会被提升,必须在访问前对类进行定义,否则就会报错。
* 类中方法不需要 function 关键字。
* 方法间不能加分号



> 
> **5.3 类的主体**
> 
> 
> 


* 公共属性(依然可以定义在原型上)



class Demo{}
Demo.prototype.a = 2;


* 实例属性



class Demo {
a = 2;
constructor () {
console.log(this.a);
}
}


* 方法:constructor



class Demo{
constructor(){
console.log(‘我是构造器’);
}
}
new Demo(); // 我是构造器


如果不写constructor,也会默认添加



> 
> **5.4 实例化对象**
> 
> 
> 



class Demo {
constructor(a, b) {
this.a = a;
this.b = b;
console.log(‘Demo’);
}
sum() {
return this.a + this.b;
}

img
img
img

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

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

需要这份系统化资料的朋友,可以戳这里获取

emo’);
}
sum() {
return this.a + this.b;
}

[外链图片转存中…(img-x0wtqvrs-1714841443703)]
[外链图片转存中…(img-YMFwo3P6-1714841443704)]
[外链图片转存中…(img-B4cPlcgq-1714841443704)]

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

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

需要这份系统化资料的朋友,可以戳这里获取

  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值