什么是 ECMAScript ?
1.常量 const,let
声明一个常量(变量一旦赋值, 就不可以重新赋值)
命名不能重复
不能变量提升
会形成一个块级作用域
const a = 'hello';const a = 'word'; //报错 Uncaught SyntaxError: Identifier 'a' has already been declareda = '你好'; //报错 Uncaught TypeError: Assignment to constant variable.
2.模板字符串
字符串和变量的拼接,在拼接的整个作用域内加``(就是键盘1前面那个键的反引号),变量和字符串都不再加'',变量使用${变量名};
var name='张三';console.log(`我的名字叫${name}`);
3.解构赋值
let obj={ name:'张三', sex:'男'; } let { name, sex }=obj;console.log(name); //张三console.log(sex); //男
4.对象的扩展
对象中的属性可以简写
对象中的方法也可以简写
let obj = {name: name //可以简写成一个 name}
5.rest参数
function fn(a, b, ...arr) { console.log(a, b, arr); //1 2 [3, 4, 5, 6, 7] } fn(1,2,3,4,5,6,7);
6.类和面向对象
注意类的定义不是一般的对象,因此,类的成员间没有逗号。
创造一个类的对象时,需要使用 new 关键词。继承一个基类时,使用 extends:
class Vehicle { constructor(name) { this.name = name; this.kind = 'vehicle'; } getName() { return this.name; } } // Create an instancelet myVehicle = new Vehicle('rocky');
创造一个类的对象时,需要使用 new 关键词。继承一个基类时,使用 extends:
class Car extends Vehicle { constructor(name) { super(name); this.kind = 'car' } } let myCar = new Car('bumpy'); myCar.getName(); // 'bumpy'myCar instanceof Car; // truemyCar instanceof Vehicle; //true
7.Math
Math 对象新增了几个方法。
Math.sign 返回数字的符号,结果为 1、-1 或 0。
Math.trunc 返回无小数位的数字。
Math.cbrt 返回数字的立方根。
8.Map 和 Set 数据结构
Set的方法:
add(value):添加一个值,返回Set结构本身
delete(value):删除某个值,返回布尔值
has(value):返回布尔值,表示是否是成员
clear():清除所有成员,无返回值
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
keys,values,entries三个方法其实返回的值是一样的.
9.默认值
function multiply(a, b = 1) { return a * b; } console.log(multiply(5, 2)); // expected output: 10console.log(multiply(5)); // expected output: 5
10.proxy
代理对象
这个新的类型用处很多,建议之间看参考文档.proxy
11.Pormise
Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值。参考文档.Promise
还有许多的新增方法
ES7新特性
1.Array.prototype.includes()
let arr = ['react', 'angular', 'vue']; if (arr.includes('react')) { console.log('react存在'); }
2.指数操作符
在ES7中引入了指数运算符**,**具有与 Math.pow(..) 等效的计算结果
console.log(2**10);// 输出1024
ES8新特性
1.async/await
在ES8中加入了对async/await的支持,也就我们所说的异步函数,这是一个很实用的功能。 async/await将我们从头痛的回调地狱中解脱出来了,使整个代码看起来很简洁。
2.Object.values()
Object.values() 是一个与 Object.keys() 类似的新函数,但返回的是Object自身属性的所有值,不包括继承的值。
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj1); console.log(values); //[1, 2, 3]
3.Object.entries
Object.entries()函数返回一个给定对象自身可枚举属性的键值对的数组。
4.String padding
在ES8中String新增了两个实例函数 String.prototype.padStart 和 String.prototype.padEnd,允许将空字符串或其他字符串添加到原始字符串的开头或结尾。
5.Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors() 函数用来获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象。