Js中var VS let VS const
变量提升
变量提升是JavaScript中比较“奇怪”的现象,它允许在变量声明之前即被访问(仅存在于var声明变量)注意:
1.变量在未声明即被访问时会报语法错误
2.变量在var声明之前即被访问,变量的值为undefined
3.let/const声明的变量不存在变量提升
4.把所有var声明的变量提升到当前作用域的最前面
5.只提升声明,不提升赋值
6.实际开发中推荐先声明再访问变量
//变量提升相当于加了一句 var numconsole.log(num + '件')num = 10console.log(num)
块作用域
在JavaScript中使用{}包裹的代码称为代码块,代码块内部声明的变量外部将【有可能】无法被访问。总结:
1.let声明的变量会产生块作用域,var不会产生块作用域
2.const声明的常量也会产生块作用域
3.不同代码块之间的变量无法互相访问
4.推荐使用let或const
细节
1.let 不允许多次声明一个变量,var可以
2.当某个变量永远不会改变的时候,就可以使用 const 来声明,const 不允许重新赋值,声明的时候必须赋值(初始化)
3.在浏览器中,使用var定义的全局变量会挂载到window上,而let和const不会