MST
星途 面试题库

面试题:JavaScript中let和const的常见使用场景对比

请阐述在JavaScript中,let和const分别适用于哪些常见的编程场景,并举例说明两者在这些场景下使用的差异。
20.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

let 的常见场景及示例

  1. 循环作用域: 在循环中使用 let 声明循环变量,可以确保每次迭代时变量有独立的作用域。
for (let i = 0; i < 5; i++) {
    setTimeout(() => {
        console.log(i);
    }, 100);
}
// 依次输出 0, 1, 2, 3, 4

在这个例子中,let 声明的 i 在每次循环迭代时都有独立的作用域,所以 setTimeout 回调函数能正确访问到每次迭代时 i 的值。

  1. 块级作用域变量: 当需要在块级作用域(如 ifelsetrycatch 块等)中声明临时变量时,let 很有用。
{
    let temp = 'This is a temporary variable';
    console.log(temp);
}
// console.log(temp); // 这里会报错,temp 超出作用域

const 的常见场景及示例

  1. 定义常量: 当某个值在程序运行过程中不会改变时,使用 const 声明常量。
const PI = 3.1415926;
console.log(PI);
// PI = 3.14; // 这会报错,常量不能重新赋值
  1. 对象和数组作为常量:虽然用 const 声明的对象和数组不能重新赋值,但对象的属性和数组的元素是可以修改的。
const person = {
    name: 'John',
    age: 30
};
person.age = 31;
console.log(person);
// const person = {name: 'Jane'}; // 这会报错,不能重新赋值

let 和 const 在这些场景下的差异

  1. 可变性let 声明的变量可以重新赋值,而 const 声明的变量一旦赋值就不能重新赋值(对于对象和数组,是不能重新指向新的对象或数组,但内部元素或属性可修改)。
  2. 使用场景侧重let 更侧重于声明会变化的变量,尤其是在块级作用域内需要临时使用且可能会改变值的变量;const 则主要用于声明那些在整个程序执行过程中值不会改变的常量,增强代码的可读性和可维护性,同时也有助于避免意外修改导致的错误。