01-变量的声明
小于 1 分钟
在一开始,只有全局变量和函数变量,没有块级作用域
- var
- 没有块级作用域
- let
- 有块级作用域
- const
- 和 let 类似,具有块级作用域,但是它只能赋值一次
- 使用场景: 1. 对于一些常量可以使用 const 声明 2. 对于一些对象(函数)也可以使用 const 声明 这样可以避免对象(函数)被意外修改
var 和 let 区别
var
是 全局变量,没有块级作用域let
是 块级作用域
现象一
for(var i=0; i<5; i++){
console.log('内部循环-->',i);
}
// i = 5
console.log('外部循环-->',i);
for 循环不能隔离变量
现象二
if(false){
var b = 33;
}
// b = undefined
console.log(b);
代码没有执行,所以是 未定义 如果是注释掉 if 代码段,会抛出异常 b is not defined
解释:变量提升
解决办法:闭包,立即函数
闭包是内部访问外部,外部不能访问内部
(function (){
if(false){
var b = 33;
}
})
// b is not defined
console.log(b);
使用 函数隔离域