面试题答案
一键面试let 的常见场景及示例
- 循环作用域:
在循环中使用
let
声明循环变量,可以确保每次迭代时变量有独立的作用域。
for (let i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i);
}, 100);
}
// 依次输出 0, 1, 2, 3, 4
在这个例子中,let
声明的 i
在每次循环迭代时都有独立的作用域,所以 setTimeout
回调函数能正确访问到每次迭代时 i
的值。
- 块级作用域变量:
当需要在块级作用域(如
if
、else
、try
、catch
块等)中声明临时变量时,let
很有用。
{
let temp = 'This is a temporary variable';
console.log(temp);
}
// console.log(temp); // 这里会报错,temp 超出作用域
const 的常见场景及示例
- 定义常量:
当某个值在程序运行过程中不会改变时,使用
const
声明常量。
const PI = 3.1415926;
console.log(PI);
// PI = 3.14; // 这会报错,常量不能重新赋值
- 对象和数组作为常量:虽然用
const
声明的对象和数组不能重新赋值,但对象的属性和数组的元素是可以修改的。
const person = {
name: 'John',
age: 30
};
person.age = 31;
console.log(person);
// const person = {name: 'Jane'}; // 这会报错,不能重新赋值
let 和 const 在这些场景下的差异
- 可变性:
let
声明的变量可以重新赋值,而const
声明的变量一旦赋值就不能重新赋值(对于对象和数组,是不能重新指向新的对象或数组,但内部元素或属性可修改)。 - 使用场景侧重:
let
更侧重于声明会变化的变量,尤其是在块级作用域内需要临时使用且可能会改变值的变量;const
则主要用于声明那些在整个程序执行过程中值不会改变的常量,增强代码的可读性和可维护性,同时也有助于避免意外修改导致的错误。