常量const
const a = 1; a +=2; console.log(a); //报错 VM6833:2 Uncaught TypeError: Assignment to constant variable. //常量只读,不能够更改
列表项目es6
es5/es6做用域
举个栗子:闭包
//es5 (function(){ var arr = []; for(var i =0;i<=2;i++){ arr[i]=function(){ return i+1; } } arr[0]();//4,i并无进入循环,而是在循环完,i++到i=3; arr[1]();//4 一个闭包的存在,当执行arr[2]()时,i已是3 })() -------- //es6 { let arr = []; for(let i = 0;i<=2;i++){ arr[i] = ()=>i+1; } arr[0]();//1 arr[1]();//2 }
let变量声明
{ let a = 1; } console.log(a);//报错 a is not defined
//不要在声明以前使用,在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
批量声明
{ let [a,b,c]=[1,2,3]; console.log(typeof a);//number }
循环
for in&&for of
var arr=[1,3,4]
for(var i in arr){
console.log(i);
}
//0,1,2函数
for(var i of arr){
//1,3,4;
}this
箭头函数
es5:es5
(function(i){ i+=1; console.log(i); })(1) //2
es6:code
((i)=>{ i+=1; console.log(i); })(1) //2
es6中function能够省略,若是括号里只有返回的表达式,那么花括号和return关键字也能够省略。对象
箭头函数this指向:作用域
//es5 { var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:function(){ return this.a; } } } console.log(new factory().c.b())//a+ } //es6 { var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:()=>this.a } } console.log(new factory().c.b())//a }