我相信在这一行 很多人都听过ES6,但了解他吗,今天我们步入ES6了解一下这个东西!
ECMAScript6(简称ES6,2015年发布),并且今后的版本以年号发布,比如2016年 就时ES7,相关插件问题可以百度!
ES6常用特性
let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments 这些是ES6最常用的几个语法,基本上学会它们,就可以满足我们日常的使用!下面就用用最通俗易懂的语言和例子来讲解它们。
let实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。
var name = 'Faker'
while (true) {
var name = 'Theshy'
console.log(name) //Theshy
break
}
console.log(name) //Theshy
在前面我们有讲过 闭包相关知识,当时我们 都讲过其实用 let 也可以解决这个问题,也就是解决全局泄露的问题1
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
Set 和 Map 数据结构
与 Array 增、删、改、查对比
let map = new Map();
let set = new Set();
let array = [];
// 增
map.set('t', 1);
set.add( { t : 1 } );
array.push( { t:1 } );
console.info( map, set, array ); // Map { 't' => 1 } Set { { t: 1 } } [ { t: 1 } ]
// 查
let map_exist = map.has( 't' );
let set_exist = set.has( {t:1} );
let array_exist = array.find(item => item.t)
console.info(map_exist, set_exist, array_exist); //true false { t: 1 }
// 改
map.set('t', 2);
set.forEach(item => item.t ? item.t = 2:'');
array.forEach(item => item.t ? item.t = 2:'');
console.info(map, set, array); // Map { 't' => 2 } Set { { t: 2 } } [ { t: 2 } ]
// 删
map.delete('t');
set.forEach(item => item.t ? set.delete(item):'');
let index = array.findIndex(item => item.t);
array.splice(index,1);
console.info(map, set, array); // Map {} Set {} []
arrow function 箭头函数
ES6中新增的箭头操作符 => 简化了函数的书写。操作符左边为输入的参数,而右边则是进行的操作以及返回的值,可以说是 ES6 最最常用的一个新特性了,看下面的实例:
let arr = [1, 3, 5, 7, 9];
arr.forEach (function(val, key) {
return console.log(val, key);
});
// ES6
let arr = [1, 3, 5, 7, 9];
arr.forEach (
(val, key) => console.log(val, key)
);
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。
Promise对象状态
Promise/A+规范, 规定Promise对象是一个有限状态机。它三个状态:
pending(执行中)
Resolved(已完成)
Rejected(已失败)
其中pending为初始状态,Resolved和rejected为结束状态(表示promise的生命周期已结束)。
这个也只是先了解一个 ES6之中的一个小语法!ES6的新语法特性让前端和后端的差异越来越小了!