01-变量的声明

Huxzhi小于 1 分钟react18

在一开始,只有全局变量和函数变量,没有块级作用域

  • 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);

使用 函数隔离域