Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • CSS

  • JavaScript

    • 兼容ie7的水平无限滚动
    • 节流防抖
    • 数组乱序
    • 开启全屏
    • 数据类型
    • 变量提升
    • this调用指向
    • 原型及原型扩展
    • js获取元素属性精度问题
    • setTimeout和setInterval
    • 数组判断
    • dom节点添加或插入元素
    • var、let和const的区别
    • 判断ellipsis是否省略生效
    • 使用ResizeObserver监听元素size变化
    • js自定义事件
    • use strict详解
    • 私有属性
    • js实现类的方式
    • call和apply的理解和使用
    • js失焦和点击事件顺序冲突
    • js中不常见但非常实用的运算符
    • for of和for in的区别
    • defer和async的区别
    • promise值穿透
    • js为什么会出现数字精确度丢失
    • js禁用F12开发者模式
    • 使用scrollTop和scrollTo滚动到目标位置
    • js实现打字机效果
    • 多种方式实现数组去重
    • 替换使用setTimeout
    • encodeURI和encodeURIComponent的区别
    • canvas实现弹跳小球
    • js实现跨标签页通信
    • 事件循环与微任务、宏任务
    • 浏览器存储数据方式
    • 常见的meta元数据使用
    • 使用InterSectionObserver判断元素区域(chatGPT)
  • 工具

  • Vue

  • antdv踩坑记录

  • Vue3

  • 前端
  • JavaScript
kros
2022-04-28

var、let和const的区别

在JavaScript中,var、let和const是用于声明变量的关键字,它们在作用域、可变性和声明时机等方面有所不同。

  1. var:在ES5及之前的版本中使用的关键字,它具有以下特点:

    • 函数作用域:var声明的变量的作用域是函数级的,如果在函数内部声明的变量,它在整个函数内部都是可见的。
    • 变量提升:使用var声明的变量会被提升到函数作用域的顶部,即变量可以在声明之前使用。
    • 可重复声明:可以多次使用var关键字声明同一个变量,后续的声明会覆盖前面的声明。

    示例:

    function example() {
      var x = 10;
      if (true) {
        var x = 20;
        console.log(x); // 输出 20
      }
      console.log(x); // 输出 20
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  2. let:在ES6引入的关键字,它修复了var的一些问题,具有以下特点:

    • 块级作用域:let声明的变量的作用域是块级的,例如在if语句或for循环中声明的变量只在对应的块中可见。
    • 不存在变量提升:使用let声明的变量不存在变量提升,必须在声明之后使用。
    • 不可重复声明:不允许在同一个作用域内重复声明同一个变量。

    示例:

    function example() {
      let x = 10;
      if (true) {
        let x = 20;
        console.log(x); // 输出 20
      }
      console.log(x); // 输出 10
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  3. const:也是在ES6引入的关键字,用于声明常量,它具有以下特点:

    • 块级作用域:const声明的常量的作用域是块级的,类似于let。
    • 声明时必须初始化:在声明时必须给常量赋初始值,且不能再次赋值。
    • 不可变性:const声明的常量的值不能被修改,但如果常量是对象或数组,则可以修改对象或数组的属性或元素。

    示例:

    function example() {
      const x = 10;
      // x = 20; // 错误,不能再次赋值
      const obj = { name: 'John' };
      obj.name = 'Jane'; // 可以修改对象的属性
      console.log(obj.name); // 输出 'Jane'
    }
    
    1
    2
    3
    4
    5
    6
    7

总结:

  • 使用var声明的变量具有函数作用域和变量提升,可以重复声明。
  • 使用let声明的变量具有块级作用域,不存在变量提升,不可重复声明。
  • 使用const声明的常量具有块级作用域,必须初始化且不可再次赋值,但对于对象和数组,可以修改其属性或元素。
上次更新: 2025/09/05, 8:09:00
dom节点添加或插入元素
判断ellipsis是否省略生效

← dom节点添加或插入元素 判断ellipsis是否省略生效→

最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev