1.定义函数
2.创建类
3.模块
4.let与const
5.箭头函数 arrow functions
6.字符串模板 template string
7.解构 destructuring
8.for-of循环(最简洁、最直接的遍历数组元素的语法)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
es6声明变量的6种方法:var,function,let,const,import,class
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.定义函数(不需要function也能定义函数)
es6
var human = {
breathe(name) { //不需要function也能定义breathe函数。
console.log(name + ' is breathing...');
}
};
human.breathe('jarson'); //输出 ‘jarson is breathing...’
es5
var human = {
breathe: function(name) {
console.log(name + 'is breathing...');
}
};
human.breathe('jarson');
2.创建类
4.let与const
4.1"暂时性死区"
"暂时性死区":在代码块内,使用let命令声明变量之前,该变量都是不可用的。
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
typeof x; // ReferenceError
let x;
上面代码中,变量x使用let命令声明,所以在声明之前,都属于x的“死区”,只要用到该变量就会报错。因此,typeof运行时就会抛出一个ReferenceError。
作为比较,如果一个变量根本没有被声明,使用typeof反而不会报错。
typeof undeclared_variable // "undefined"
<b>暂时性死区的本质就是</b>,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
5.箭头函数
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
并不是因为箭头函数内部有绑定this的机制,<b>实际原因是</b>箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。