全局变量:在全局范围内定义的变量,或者在函数里不适用var定义的变量。
局部变量:在函数里用var定义的变量
变量提升:变量声明总是会被解释器“提升”到函数体的顶部(顶部的提升变量不会给他赋值),也就是提前装载。
局部变量会覆盖全局变量
html的事件处理也是可以用js的全局变量
js只认函数体的花括号,不认其他如if的花括号,所以只有在函数体里的var才是局部变量,也就是说,局部变量只要不出函数体花括号都可以用。所以var没有块范围,但let有
如果使用var定义变量,程序会强制定义一个新变量
如果没有使用var的话,如果全面有同名的全局变量,就是给前面的赋值,没有就定义一个新变量
var定义的变量默认会把它作为window里的一个属性(全局的函数,全局的变量都是属于window的属性的)可以window.变量输出
let不会把它作为window的属性
var可以使用window属性输出,更加灵活,如想要输出index+i时,就可以用window["index"+i]来输出
window.index和window["index"]是一样的。