这张图片主要介绍了JavaScript中的三种变量声明方式:let
、var
和const
。
1. let
- 含义:
let
是现在实际开发中常用的变量声明方式。 - 特点:
- 块级作用域:
let
声明的变量只在其所在的块级作用域内有效。例如:{let x = 10; } console.log(x); // 报错,x在块级作用域外不可访问
- 不存在变量提升:在声明之前使用
let
变量会报错。例如:console.log(y); // 报错 let y = 20;
- 不允许重复声明:在同一个作用域内不能用
let
重复声明已经存在的变量,会报错。例如:let z = 5; let z = 10; // 报错
- 块级作用域:
2. var
- 含义:
var
是以前的变量声明方式,会有很多问题。 - 特点:
- 函数级作用域:
var
声明的变量的作用域是函数级的。例如:function test() {if (true) {var a = 10;}console.log(a); // 10,在if语句块外仍能访问a } test();
- 存在变量提升:使用
var
声明的变量会被提升到函数顶部,但变量的值是undefined
,直到实际赋值语句执行。例如:console.log(b); // undefined var b = 20;
- 允许重复声明:在同一个作用域内可以多次用
var
声明同一个变量,后面的声明会覆盖前面的声明。例如:var c = 5; var c = 10; console.log(c); // 10
- 函数级作用域:
3. const
- 含义:
const
类似于let
,但是变量的值无法被修改。 - 特点:
- 块级作用域:与
let
一样具有块级作用域。例如:{const d = 30; } console.log(d); // 报错,d在块级作用域外不可访问
- 不存在变量提升:在声明之前使用
const
变量会报错。例如:console.log(e); // 报错 const e = 40;
- 不允许重复声明:在同一个作用域内不能用
const
重复声明已经存在的变量,会报错。例如:const f = 15; const f = 20; // 报错
- 常量特性:声明后不能重新赋值。但是如果声明的是对象或数组,其内部属性或元素可以被修改。例如:
const obj = {name: 'Alice'}; obj.name = 'Bob'; // 允许,修改对象的属性 // obj = {name: 'Charlie'}; // 报错,不能重新赋值
- 块级作用域:与
在现代JavaScript开发中,let
和const
通常比var
更受欢迎,因为它们的块级作用域和不存在变量提升的特性有助于编写更清晰、更不易出错的代码,而const
在需要定义常量时非常有用。