let和const的使⽤
es5中使用var来声明全局变量
es5中我们学习了使用var来声明变量,但是使用var声明变量,会存在变量提升的问题。即变量可以在声明之前使用,值为undefined
。
栗子1:
console.log(a); // var 的结果:undefined-->变量提升 { var a = 2; console.log(a); // 2 } console.log(a); // var 的结果:2-->变量提升 //在js中一个{},称为作用域,使用var声明变量,会存在变量提升的问题。 //什么是变量提升呢?当解析脚本的时候,当在脚本中遇到var声明的变量,会将 var a;提到最上面去声明。从而导致此问题。由此也会使,a是一个全局的变量 //上面的在局部作用域声明并赋值给a=2,相当于这样将a声明为一个全局作用域的变量,然后在局部作用域对a赋值为2. var a; //声明全局变量 console.log(a); // var 的结果:undefined { a = 2; // 在局部作用域对全局变量的a赋值 console.log(a); } console.log(a); // var 的结果:2