目录
定义变量
var let const为三种定义变量的方式,不同点是什么大家应该都知道。
let有变量提升
let是块级作用域,就好比我们的for循环为什么用let就可以输出0,1,2,3,4因为let是块级作用域,在for循环的花括号内,而用var是在全局里的。
let在作用域中不能重复定义
for(let i=0;i<5;i++){
setTimeout(()=>{
console.log(i);
}, 0);
}
然后吧
当我们在函数内部用var定义一个变量,由于这个变量是局部变量,所有在全局中使用这个变量就会报错。
function test(){
var msg='nn'
}
test()
console.log(msg);
结果是
我们如果去掉var就会在全局里创建一个这个变量名的变量
function test(){
msg='nn'
}
test()
console.log(msg);
结果为
变量提升
当我们在函数中定义一个变量,有变量提升的会将这个变量名进行提升,变量是进行undefined赋值,函数是整个进行提升到最前面。