es6 -> es2015 babel 可以将es6 转换成es5
1.var 作用域的问题(会污染全局作用域)
2.var 的声明问题 可能有重复声明的问题
3.变量提升 预解释
4.常量 不能被更改的量
1.格式化 CTRL + ALT + F
const a = 1; const a = 2; // Identifier 'a' has already been declared 变量不能重复声明,同一个作用域不能重复声明
2.声明的变量let和const 不会声明到window上
// 作用域:函数作用域 全局作用域 let a = 1; for(let i = 0; i<3;i++){ } console.log(i); // console.log(window.a); // {} 可以表示一个作用域, 以前循环时用var定义的会声明到全局上
暂存死区
let a = 1; if(true){ console.log(a); let a = 2; } 用let声明的变量会绑定在当前作用域内,尽量避免这样声明
3.用var声明的会预解释 但是不会赋值
console.log(b); let a = 1; let b = function(){ }
4. 常量 const 一般常量都会用大写来表示
const PI = {name:3.14}; PI.name = 3.15 // 不能被更改的量,引用地址不变就可以 for(let i = 0;i<3;i++){ setTimeout(function(){ console.log(i); }) } // 循环绑定事件