ECMAScript 5 (ES5):ECMAScript 的第五版,于2009年标准化,该标准已在所有现代浏览器中完全支持。
ECMAScript 6 (ES6)/ ECMAScript 2015 (ES2015):ECMAscript 第 6 版,2015 年标准化。这个标准已经在大多数现代浏览器中部分实现。以下是ES5和ES6之间的一些主要区别:
- 箭头函数和字符串插值
也可以这样写:const greetings = (name) => { return `hello ${name}`; }
const greetings = name => `hello ${name}`;
- const:const 表示无法修改变量的原始值。需要注意的是,const表示对值的常量引用,咱们可以改变被引用的对象的属性值,但不能改变引用本身。
const NAMES = [];
NAMES.push("Jim");
console.log(NAMES.length === 1); // true
NAMES = ["Steve", "John"]; // error
-
块作用域:ES6 中 let, const 会创建块级作用域,不会像 var 声明变量一样会被提升。
-
默认参数:默认参数使咱们可以使用默认值初始化函数。当参数省略或 undefined 时使用默认参数值。f
unction multiply (a, b = 2) { return a * b; } multiply(5); // 10
-
类定义与继承
ES6 引入了对类(class关键字)、构造函数(constructor关键字)和 extend 关键字(用于继承)的语言支持。 -
for-of
运算符for...of 语句创建一个遍历可迭代对象的循环。展开操作符const obj1 = { a: 1, b: 2 } const obj2 = { a: 2, c: 3, d: 4} const obj3 = {...obj1, ...obj2}
-
Promises:
Promises 提供了一种机制来处理异步操作的结果和错误。可以使用回调来完成相同的事情,但是Promises 通过方法链接和简洁的错误处理来提高可读性。const isGreater = (a, b) => { return new Promise ((resolve, reject) => { if(a > b) { resolve(true) } else { reject(false) } }) } isGreater(1, 2) .then(result => { console.log('greater') }) .catch(result => { console.log('smaller') })
-
模块导出
const myModule = { x: 1, y: () => { console.log('This is ES5') }} export default myModule;
-
导入
import myModule from './myModule';
网友评论