let,const,var区别

简介: let,const,var区别

let和var区别:

在较旧的js,使用关键字var来声明变量,而不是let

var现在开发一般不再使用它,只是我们可能再老版程序中看到它

let为le解决var的一些问题:

var声明:

可以先使用在声明(不合理)

var声明过的变量可以重复声明(不合理)

比如变量提升,全局变量,没有块级作用域等等

区别:

  • var 声明的范围是函数作用域,let 和 const 声明的范围是块作用域
  • var 声明的变量会被提升到函数作用域的顶部,let 和 const 声明的变量不存在提升,且具有暂时性死区特征
  • var 允许在同一个作用域中重复声明同一个变量,let 和 const 不允许
  • 在全局作用域中使用 var 声明的变量会成为 window 对象的属性,let 和 const 声明的变量则不会
  • const 的行为与 let 基本相同,唯一 一个重要的区别是,使用 const 声明的变量必须进行初始化,且不能被修改

作用域:

var没有块级作用域,而let声明的范围是块作用域; 一对大括号 就是 一个块级作用域

暂时性死区:

  • 只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量
  • 暂时性死区和不能变量提升的意义在于: 为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为

const优先的原因:

  • const语义化更好
  • 很多变量我们声明的时候就知道他不会被改变了,那为什么不用const呢
  • 实际开发也是,比如react框架,基本const

const声明的值不能更改,而且const声明变量的时候需要里面进行初始化

但是对于引用数据类型,const声明的变量,里面存的不是值,是地址

目录
相关文章
|
机器学习/深度学习 自然语言处理 机器人
【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人
LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
|
算法 PyTorch 计算机视觉
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
|
设计模式 存储 缓存
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(二)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
299 0
|
存储 算法 搜索推荐
15一维数组
15一维数组
132 0
|
传感器 安全 物联网
5G与物联网:加速产业数字化转型
【10月更文挑战第26天】
316 0
|
人工智能 关系型数据库 分布式数据库
DB+AI会擦出怎样的火花?一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践!
从 DB+AI 精选解决方案、特惠权益等,一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践。
|
Kubernetes 监控 网络协议
在K8S中,Pod不同探针有何区别?
在K8S中,Pod不同探针有何区别?
|
安全 算法 搜索推荐
现代操作系统的设计与优化策略
本文深入探讨了现代操作系统在设计与优化方面的多种策略。通过分析系统架构、内核优化、用户界面设计以及安全性增强等关键方面,揭示了如何构建一个高效、稳定且安全的操作系统。同时,结合具体案例和实际应用场景,展示了这些策略在实践中的应用与成效。
320 1
|
JavaScript
jQuery 遍历 方法
jQuery 遍历 方法
82 3
|
存储 编译器 C语言
认识一维数组和使用
**数组概念与特性:**数组是一组相同类型元素的集合,包含至少一个元素。数组可分为一维和多维(如二维数组)。在创建时需指定大小和元素类型,如`int arr[5]`表示一个包含5个整数的数组。数组元素通过下标访问,下标从0开始。数组在内存中连续存放,可以通过`sizeof`计算数组占用的字节数以间接获取元素个数。
145 1