天天看点

ES6和ES5的区别

1. ES5和ES6的区别?

ECMAScript 5 (ES5):ECMAScript 的第五版,于2009年标准化,该标准已在所有现代浏览器中完全支持。

ECMAscript 6 (ES6):ECMAscript 第 6 版,2015 年标准化。这个标准已经在大多数现代浏览器中部分实现。

两者之间的区别:

箭头函数和字符串插值

const foo = (name)=>{
	return `hello ${name}`;
}
           

等价于=>

const foo = name => `hello ${name}`;
           

const:const表示无法修改变量的原始值。const表示对值的常量引用。可以改变被引用对象的属性值,但不能改变引用本身。

const arr = [];
arr.push = ("name");
console.log(arr.length === 1);		//true
arr = ["age","address"];		//false
           

块作用域: ES6中,let和const会创建块作用域,不会var声明变量一样被提升。

默认参数:默认参数是可以使用默认值初始化函数。当参数省略或undefined时使用默认参数值。

function foo(a,b = 2) {
	return a*b;
}
foo(5);		//10
           

类定义与继承

ES6 引入了对类(class关键字)、构造函数(constructor关键字)和 extend 关键字(用于继承)的语言支持。

for-of 运算符

for…of 语句创建一个遍历可迭代对象的循环。

Spread 操作符用于对象融合

const obj1 = {};
const obj2 = {a:2, c:3, d:4};
const obj3 = {...obj,...obj2}
           

Promises

Promises提供了一种处理异步操作的结果和错误的机制。你可以用回调来完成同样的事情,但是promises通过方法链接和简洁的错误处理提供了更高的可读性。

const isGreater = (a,b) => {
	return new Promise((resvolve,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 helloworld')}}
export default myModule;
           

导出:

import myModule from './myModule'
           
es6