1、var VS let & const
var 可以定义全局变量,与之不同,let的重要特性就是提供了块级作用域和不具备变量提升。const主要用于定义常量,常量顾名思义不是变量,意思就是一经定义,值就无法改变。
首先弄明白块级作用域:ES5中有全局作用域与函数作用域,块级作用域是ES6中的新语法,可直接用{}表示,if和for中的{}都是块级作用域;
{
var a =1 ;
let b=2 ;
const c= 3;
console.log(111,a) //--结果:1
console.log(111,b) //--结果:2
console.log(111,c) //--结果:3
}
console.log(222,a) //--结果:1
console.log(222,b) // --结果 :报错 Uncaught ReferenceError: you is not defined
console.log(222,c) // --结果 :报错 Uncaught ReferenceError: you is not defined
变量提升:就是在定义一个变量之前就使用该变量,var 定义的变量存在变量提升,let 和const都不存在变量提升,如下:
console.log(me); // --结果:undefined
var me = '我'
console.log(you); // --结果 :报错 Uncaught ReferenceError: you is not defined
let you = '你'
常量与变量 :
let cat = '猫' ;
const dog = '狗' ;
cat = '喵喵' ;
console.log(cat) //--结果:喵喵
dog = '旺旺' ; // --结果 :报错 Uncaught TypeError: Assignment to constant variable (不能更改的常量)