js 变量提升:
函数内的所有用var 声明的变量都会提升到函数的第一行进行声明,此操作将会覆盖函数外的全局变量的声明。
例如
function a(){
console.log(a);
var a = 0;
console.log(a);
}
程序会在控制台打印
undefined
0
实际上这段代码相当于
function a(){
var a ;
console.log(a);
a = 0;
console.log(a);
}
js let关键字:
js内用var声明或者直接定义会有一些变量提升的奇奇怪怪的特性,使用let使js的变量的作用域更像c/java的变量作用域。