ES规范

一、ES6特性:

1.声明:let和const

我们通常用let和const来声明,let表示变量、const表示常量。let和const都是块级作用域。

(1)变量声明let

let test = 'hello'

(2)const 常量声明

const name = 'lux'
name = 'joe' //再次赋值此时会报错

2.箭头函数:()=>{}

//传统函数
function sum(a, b) {
  return a + b;
}

//箭头函数
const sum1 = (a, b) => {
  return a + b;
}
const sum2 = (a, b) => a + b;
const sum3 = x => {
  // 逻辑
};

箭头函数和普通函数的区别:

(1)this指向:箭头函数的this是确定的,在定义函数时就被确定下来的,于外层的函数绑定好了;普通函数是动态的,依赖于函数的调用。

(2)return:箭头函数如果只有一个表达式,这个表达式就会被隐式返回,而且不需要使用return关键字

(3)我们可以在class中使用箭头函数,this会和类实例进行绑定

(4)arguments:在普通函数中,可以获取到所有的参数;在箭头函数中, arguments是指向外层的函数的arguments的。如果想要获取到统一取到箭头函 数的参数,可以使用...操作符

(5)箭头函数是匿名函数,不能作为构造函数,不能使用new。

(6)箭头函数没有原型属性

3.函数参数默认值:

function foo(age = 25,){}

4.延展操作符: ...list
5.对象属性简写:

const name='小山峰';
const obj = { name }

6.模块化(ES Module): export{}

const isEmpty= name=> {
  console.log(name)
}
module.exports = {
    isEmpty
}

7.解构赋值:

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

8.Promise:

Promise是ES6 原生提供的对象,Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。

一个 Promise 必然处于以下几种状态之一:
待定(pending): 初始状态,既没有被兑现,也没有被拒绝。
已兑现(fulfilled): 意味着操作成功完成。
已拒绝(rejected): 意味着操作失败。

Promise 特点:
(1)对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态
(2)一旦状态改变(从pending变为fulfilled和从pending变为rejected),就不会再变,任何时候都可以得到这个结果

Promise 优缺点:
(1)有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。
(2)Promise 也有一些缺点。
首先,无法取消 Promise,一旦新建它就会立即执行,无法中途取消。
其次,如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。
第三,当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

const promise = new Promise(function(resolve, reject) {});
promise.then(result => {
  ···
}).catch(error => {
  ···
}).finally(() => {
  ···
});

a.then()是实例状态发生改变时的回调函数,第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数
b.catch()方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数
c.finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作

9.模板字符串: ``

//${这是个变量},模板字符串也可以用来拼接路由跳转参数,效果非常好
const str = `Your name is ${name}`; 

10.类(class)

class Man { 
  constructor(name) { 
    this.name = '小山峰';
  } 
  console() { 
    console.log(this.name);
  }
}
const man = new Man('小山峰');
man.console(); // 小山峰

 

posted @ 2022-08-05 10:36  时光独醒  阅读(29)  评论(0编辑  收藏  举报