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(); // 小山峰