1、在非函数内使用var或let声明的变量拥有全局的作用域,是全局变量。例如,下面定义的变量x和y,都是全局变量。
2、在函数内使用var或let声明的变量是局部变量,只能在函数内部使用。例如 ,下面两个函数,两个变量都是局部变量。
3、let声明的变量有块作用域的概念,而var声明的变量没有块作用域的概念,在块作用域外也可以使用。
4、let和var在重新声明变量时,有所不同。在块中使用var重新声明变量,在块外的变量也会被重新定义;在块中使用let重新声明变量,在块外的变量不会被重新定义。
5、在循环中的变量,使用var和let声明的变量也是有区别的。例如 ,下面for循环中,var声明的变量,经过循环之后,var的值会随之改变;let声明的变量,只在for循环内使用,不影响循环外的变量值。
6、在js中,var声明的变量属于window对象,可以使用点的方式调用,而let声明的变量不属于window对象。
7、在同一个作用域下,使用let重新声明一个已经使用var声明的变量是不允许的,但var是可以重复声明变量的。