# 28.let const var

@[TOC]

# 一,window 挂载

  1. var 声明的变量会挂载在 window 上。
  2. 而 let 和 const 声明的变量不会:
let a = 2;
var b = 3;
console.log(window.a); //undefined
console.log(window.b); //3
1
2
3
4

var 定义的变量,作用域是整个封闭函数,是全域的; let 定义的变量,作用域是在块级或者字块中;

# 二,变量提升;

  1. let 和 const 不存在变量提升机制
    • let 声明的变量不会在顶部初始化,凡是在 let 声明之前使用该变量都会报错(引用错误 ReferenceError);
  2. 不论通过 var 声明的变量处于当前作用于的第几行,都会提升到作用域的最顶部

创建变量的六种方式中: var/function 声明的变量有提升机制,而 let、const、class 和 import 都不存在这个机制

# 三,作用域

let 和 const 声明形成块作用域 只要块级作用域内存在 let,它所声明的变量就会绑定在这个区域;

if (1) {
  var a = 100;
  let b = 10;
}
console.log(a); // 100
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
1
2
3
4
5
6

# 四,重复声明

  1. let 不允许在相同作用域内重复声明(报错同时使用 var 和 let,两个 let)。
  2. var 允许重复声明,而 let 是不允许的

const 用来专门声明一个常量,它跟 let 一样作用于块级作用域,没有变量提升,重复声明会报错,不同的是 const 声明的常量不可改变,声明时必须初始化(赋值)

Last Updated: 6/3/2024, 1:08:34 AM