JavaScript 中 var
、let
、const
的区别
一、基本区别
特性 | var |
let |
const |
---|---|---|---|
作用域 | 函数作用域或全局作用域 | 块级作用域 ({} 内有效) |
块级作用域 ({} 内有效) |
变量提升 | ✅(提升并初始化为 undefined ) |
❌(存在暂时性死区) | ❌(存在暂时性死区) |
重复声明 | ✅(可重复声明) | ❌(同一作用域不可重复声明) | ❌(同一作用域不可重复声明) |
修改值 | ✅(可重新赋值) | ✅(可重新赋值) | ❌(基本类型不可修改,引用类型可修改属性) |
初始化要求 | ❌(可不初始化) | ❌(可不初始化) | ✅(必须初始化) |
二、详细说明
1. 作用域
-
var
:- 函数作用域(在函数内声明)或全局作用域(在函数外声明)。
- 没有块级作用域,
if
、for
等块内声明的变量会泄漏到外部。
if (true) { var a = 10; } console.log(a);