【ecma-262/8.0】http://www.ecma-international.org/ecma-262/8.0/index.html
1、Let & const
let 的三个特性:a、只在块级作用域内有效;b、预解析时声明的变量不会提升(暂时性死区);c、同一作用域内禁止声明已经存在的变量(可能通过var声明的);
1 for (let i = 0; i < 3; i++) { 2 let i=10; 3 console.log(i); // 3个10 4 }; 5 6 console.log(i) // i is not defined
小节:在for循环中,方括号里面的循环语句之内是一个父作用域,花括号里面的循环体内是一个子作用域,let只在for循环的一个块级作用域中有效。
const :拥有和let同样的的三个特性,此外,const 还具有如下的特性,a、声明的时候必须赋值;b、声明的常量如果是基本类型,则不可以改变。如果是一个对象,则只要引用不改变,对象内的数值可以变化。
const obj={'value':10}; obj.value=20; console.log(obj) //Object {value: 20} const base='10'; base='20'; console.log(base);//Assignment to constant variable.
2、箭头函数 (三个关注点:返回值,this,无arguments)
var a=() =>{} console.log(a); // undefined
------------------------------------------------------------------
var a=() =>({}) console.log(a); // object{}
------------------------------------------------------------------
var a=() =>{ return 3 } console.log(a); // 3
let b={ name:'aaa' }; b.a=function(){ let a=() =>{ return this; } return a(); } console.log(b.a()) // Object {name: "aaa", a: function} ------------------------------------------------------------------ let b={ name:'aaa' }; b.a=function(){ let a=function(){ return this; } return a(); } console.log(b.a()) // Window{.....}