JavaScript的let、var、const

这张图片主要介绍了JavaScript中的三种变量声明方式:letvarconst

1. let

  • 含义let是现在实际开发中常用的变量声明方式。
  • 特点
    • 块级作用域:let声明的变量只在其所在的块级作用域内有效。例如:

      javascript 复制代码
      {
        let x = 10;
      }
      console.log(x); // 报错,x在块级作用域外不可访问
    • 不存在变量提升:在声明之前使用let变量会报错。例如:

      javascript 复制代码
      console.log(y); // 报错
      let y = 20;
    • 不允许重复声明:在同一个作用域内不能用let重复声明已经存在的变量,会报错。例如:

      javascript 复制代码
      let z = 5;
      let z = 10; // 报错

2. var

  • 含义var是以前的变量声明方式,会有很多问题。
  • 特点
    • 函数级作用域:var声明的变量的作用域是函数级的。例如:

      javascript 复制代码
      function test() {
        if (true) {
          var a = 10;
        }
        console.log(a); // 10,在if语句块外仍能访问a
      }
      test();
    • 存在变量提升:使用var声明的变量会被提升到函数顶部,但变量的值是undefined,直到实际赋值语句执行。例如:

      javascript 复制代码
      console.log(b); // undefined
      var b = 20;
    • 允许重复声明:在同一个作用域内可以多次用var声明同一个变量,后面的声明会覆盖前面的声明。例如:

      javascript 复制代码
      var c = 5;
      var c = 10;
      console.log(c); // 10

3. const

  • 含义const类似于let,但是变量的值无法被修改。
  • 特点
    • 块级作用域:与let一样具有块级作用域。例如:

      javascript 复制代码
      {
        const d = 30;
      }
      console.log(d); // 报错,d在块级作用域外不可访问
    • 不存在变量提升:在声明之前使用const变量会报错。例如:

      javascript 复制代码
      console.log(e); // 报错
      const e = 40;
    • 不允许重复声明:在同一个作用域内不能用const重复声明已经存在的变量,会报错。例如:

      javascript 复制代码
      const f = 15;
      const f = 20; // 报错
    • 常量特性:声明后不能重新赋值。但是如果声明的是对象或数组,其内部属性或元素可以被修改。例如:

      javascript 复制代码
      const obj = {name: 'Alice'};
      obj.name = 'Bob'; // 允许,修改对象的属性
      // obj = {name: 'Charlie'}; // 报错,不能重新赋值

在现代JavaScript开发中,letconst通常比var更受欢迎,因为它们的块级作用域和不存在变量提升的特性有助于编写更清晰、更不易出错的代码,而const在需要定义常量时非常有用。

相关推荐
Pluchon14 小时前
硅基计划3.0 Map类&Set类
java·开发语言·数据结构·算法·哈希算法·散列表
gnip14 小时前
pnpm 的 monorepo架构多包管理
前端·javascript
zolty14 小时前
基于hiprint的票据定位打印系统开发实践
javascript
42fourtytoo14 小时前
天津大学智算2026预推免机试第二批题目及代码c++
开发语言·c++·面试
七夜zippoe14 小时前
缓存三大劫攻防战:穿透、击穿、雪崩的Java实战防御体系(一)
java·开发语言·缓存
almighty2714 小时前
C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
开发语言·c#·wpf·usb相机·参数设置
起个昵称吧15 小时前
立即数、栈、汇编与C函数的调用
c语言·开发语言·汇编
子豪-中国机器人15 小时前
枚举算法和排序算法能力测试
开发语言·c++·算法
百思可瑞教育15 小时前
使用UniApp实现一个AI对话页面
javascript·vue.js·人工智能·uni-app·xcode·北京百思可瑞教育·百思可瑞教育
VBA633715 小时前
如何学习VBA:换一种思路思考问题,利用数据库实现数据处理自动化
开发语言