MST

星途 面试题库

面试题:TypeScript中let和const声明变量的差异及使用场景

请阐述TypeScript中let和const声明变量的主要差异,并举例说明在前端开发中它们各自适用的场景。
24.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

let 和 const 声明变量的主要差异

  1. 可变性
    • let:声明的变量是可变的,可以重新赋值。例如:
    let num: number = 10;
    num = 20; // 合法,重新赋值成功
    
    • const:声明的变量是常量,一旦赋值后不能重新赋值。例如:
    const PI: number = 3.14;
    // PI = 3.1415; // 报错,不能对常量重新赋值
    
  2. 作用域
    • let:具有块级作用域。例如:
    {
        let localVar: string = 'inside block';
        console.log(localVar); // 输出 'inside block'
    }
    // console.log(localVar); // 报错,localVar 在此处未定义,超出其块级作用域
    
    • const:同样具有块级作用域。例如:
    {
        const constVar: string = 'inside block';
        console.log(constVar); // 输出 'inside block'
    }
    // console.log(constVar); // 报错,constVar 在此处未定义,超出其块级作用域
    

前端开发中适用场景

  1. let 的适用场景
    • 循环变量:在 for 循环中很常用,因为每次迭代变量需要改变。例如:
    for (let i = 0; i < 10; i++) {
        console.log(i);
    }
    // 这里的 i 在循环外不可访问,符合块级作用域特性
    
    • 需要动态更新值的变量:比如在实现一个计数器功能时,变量值会随着用户操作不断变化。例如:
    let count: number = 0;
    function increment() {
        count++;
        return count;
    }
    
  2. const 的适用场景
    • 配置项:前端应用中一些固定的配置信息,如 API 地址。例如:
    const API_URL: string = 'https://example.com/api';
    
    • 不应该被修改的引用类型(对象、数组等):虽然 const 声明的引用类型变量不能重新赋值,但对象或数组内部的值可以修改。例如:
    const user: { name: string; age: number } = { name: 'John', age: 30 };
    // user = { name: 'Jane', age: 25 }; // 报错,不能重新赋值
    user.age = 31; // 合法,对象内部属性可以修改
    
    • 用于避免误修改的变量:在一些计算过程中,某些中间结果不希望被意外修改,使用 const 声明可以起到保护作用。例如:
    const result: number = calculateSomeValue();
    // 后续代码不会意外修改 result 的值