var
使用var声明变量,会有变量提升。var声明的变量会把变量声明提前到当前作用域的最顶端,但不会赋值。函数声明,也有提前而且还会提前定义函数,所以函数声明可以提前执行,而函数表达式不能被提前执行。
实际使用中,尽量使用函数函数表达式来书写函数,避免函数声明被提前执行,出现不不必要的错误。
全局变量对象VO中使用var声明的变量,也会在全局对象GO中增加对应的属性,也就是var a=0
window.a=0
函数中不用var声明,也不是形参的变量,是全局变量。
var声明的变量可以重新声明,但let和const声明的变量不可以重新声明。在代码编译,词法解析阶段就不能通过,还没进去代码执行就会报错了。
let
只在当前块级作用域的私有变量。解决了循环中无法保存变量的问题。
let和const都是创建变量的语法,
let创建的变量可以改变指针的指向。
const创建的变量不可以改变指针的指向。