hand
_1_11_7
4
返回栏目
0k
2k
1k
2k
1k
1k
1k
2k
2k
2k
1k
2k
1k
2k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
2k
1k
1k
2k
2k
2k
3k
3k
2k
3k
2k
3k
3k
3k
1k
2k
3k
2k
2k
3k
3k
2k
2k
6k
3k
2k
2k
5k
3k
4k
3k
3k
2k
4k
3k
3k
2k
3k
3k
1k
4k
4k
4k
2k
5k
3k
2k
3k
4k
3k
3k
4k
2k
3k
3k
4k
2k
2k
3k
4k
3k
3k
2k
5k
2k
3k
3k
3k
3k
2k
3k
3k
3k
2k
2k
2k
2k
3k
2k
2k
2k
3k
2k
2k
2k
2k
2k
2k
0.1k
0.2k
3k
2k
3k
2k
0.1k
2k
2k
4k
2k
2k
1k
2k
2k
3k
3k
3k
3k
2k
2k
3k
3k
3k
4k
3k
3k
4k
3k
2k
2k
3k
3k
3k
3k
3k
3k
2k
3k
3k
4k
4k
3k
3k
2k
2k
3k
2k
2k
1k
2k
3k
1k
2k
2k
2k
2k
2k
2k
2k
2k
2k
4k
2k
3k
2k
1k
2k
2k
2k
2k
2k
3k
2k
3k
1k
2k
2k
2k
0k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
1k
1k
3k
2k
3k
1k
2k
1k
2k
2k
2k
2k
3k
1k
3k
2k
2k
2k
2k
2k
2k
1k
2k
2k
4k
3k
3k
2k
2k
2k
2k
2k
2k
4k
3k
3k
3k
2k
2k
2k
2k
2k
2k
3k
4k
返回前端 - Javascript栏目
作者:
贺及楼
成为作者
更新日期:2025-02-21 17:09:35
在 JavaScript 的世界里,变量声明是构建代码大厦的基石。而 var
、let
和 const
就像是三种不同的建筑材料,各自有着独特的特性和适用场景。今天,我们就来深入探讨一下它们之间的区别。
var
- 传统的“万能砖”在早期的 JavaScript 中,var
是声明变量的唯一方式,就像建筑里的万能砖,到处都能用。下面是一个简单的例子:
var message = "Hello, World!";
console.log(message); // 输出: Hello, World!
var
有一个很显著的特点,就是存在变量提升。这意味着你可以在变量声明之前使用它,不过此时它的值是 undefined
。
console.log(name); // 输出: undefined
var name = "Alice";
此外,var
没有块级作用域,只有函数作用域。看下面的例子:
function testVar() {
if (true) {
var age = 20;
}
console.log(age); // 输出: 20
}
testVar();
在这个例子中,age
变量虽然是在 if
块中声明的,但由于 var
没有块级作用域,所以在 if
块外部也能访问到它。
let
- 灵活的“模块板”ES6 引入了 let
关键字,它就像是灵活的模块板,可以更精准地控制变量的作用范围。let
具有块级作用域,这意味着变量只在声明它的块内有效。
function testLet() {
if (true) {
let score = 100;
console.log(score); // 输出: 100
}
// console.log(score); // 报错: score is not defined
}
testLet();
同时,let
不存在变量提升,在变量声明之前访问会报错,这被称为“暂时性死区”。
// console.log(city); // 报错: Cannot access 'city' before initialization
let city = "Beijing";
const
- 坚固的“承重墙”const
也是 ES6 引入的,它就像坚固的承重墙,一旦声明就必须赋值,而且不能再重新赋值,这意味着它声明的是常量。
const PI = 3.14159;
// PI = 3.14; // 报错: Assignment to constant variable.
不过,如果 const
声明的是引用类型(如对象或数组),虽然不能重新赋值,但可以修改其内部属性。
const person = { name: "Bob", age: 25 };
person.age = 26;
console.log(person.age); // 输出: 26
const
同样具有块级作用域和暂时性死区。
关键字 | 作用域 | 变量提升 | 是否可重新赋值 | 声明时是否必须赋值 |
---|---|---|---|---|
var |
函数作用域 | 有 | 是 | 否 |
let |
块级作用域 | 无(存在暂时性死区) | 是 | 否 |
const |
块级作用域 | 无(存在暂时性死区) | 否(引用类型可修改内部属性) | 是 |
在实际开发中,我们应该根据具体的需求来选择合适的变量声明方式。如果变量的值不需要改变,优先使用 const
,这样可以增加代码的安全性和可读性;如果变量的值会改变,且需要块级作用域,就使用 let
;只有在需要兼容旧代码或者确实需要函数作用域时,才考虑使用 var
。
通过了解 var
、let
和 const
的区别,我们可以更好地掌控 JavaScript 中的变量,编写出更加健壮和易于维护的代码。
前端 - Javascript
整章节共299节
快分享给你的小伙伴吧 ~