当前位置: 首页 > news >正文

JS中var和let和const的区别

在我很早之前,我还在用着var,直到接触到了let与const,我才知道var造成的影响很多,我果断的抛弃了var,哈哈
让我为大家介绍一下它们的区别吧!

1.块级作用域

块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域

    {// var没有块级作用域var a = 10// let有块级作用域let b = 20// const有块级作用域const c = 30}console.log(a) //打印10console.log(b) //报错,b is not definedconsole.log(c) //报错,c is not defined ,因为let已经报错,后面没打印出来

块级作用域解决了ES5中的两个问题:
内层变量可能覆盖外层变量

    var a = 5function fun() {//变量提升导致,没有块级作用域console.log(a) //undefined{var a = 10}}fun()

用来计数的循环变量泄露为全局变量

    for(var i = 0;i < 5;i++){console.log(i) //0 1 2 3 4}console.log(i) //5

2.变量提升

var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否则会报错

    // var变量提升console.log(a) //undefinedvar a = 10
    // let与const没有变量提升console.log(a) //报错let a = 10 console.log(b)//报错const b = 10

3.重复声明

var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的变量。const和let不允许重复声明变量。

    var a = 10console.log(a) //10var a = 20console.log(a) //20
    let a = 10let a = 20console.log(a) //报错
    const a = 10const a = 20console.log(a) //报错

4.暂时性死区

在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区
因为var的作用域为全局作用域,存在变量提升,let与const没有变量提升,而且let与const有块作用域
代码同变量提升模块

5.初始值设置

在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。

    var aconsole.log(a) //undefinedlet bconsole.log(b) //undefinedconst cconsole.log(c) //报错 在const声明中缺少初始化式

感谢大家的阅读,如有什么不对的地方,可以向我指出,感谢大家!

http://www.lryc.cn/news/199745.html

相关文章:

  • 如何利用IP定位技术进行反欺诈?
  • wireshark抓包本地IDEA xml格式报文教程以及postman调用接口
  • MySQL学习(六)——视图和触发器
  • 那些你面试必须知道的ES6知识点
  • AD9371 系列快速入口
  • Jenkins+vue发布项目
  • RSTP详解:对比STP,到底改进了什么?
  • 从0到1,申请cos服务器并上传图片到cos文件服务器
  • Stm32_标准库_15_串口蓝牙模块_手机与蓝牙模块通信_BUG修复
  • 文心一言帮忙写代码之微信小程序图片移动顺序
  • 【电子通识】USB接口三大类型图册
  • @Controller与@RestController
  • Compose Desktop 使用中的几个问题(分平台加载资源、编写Gradle 任务下载平台资源、桌面特有组件、鼠标键盘事件)
  • 【华为OD机试python】返回矩阵中非1的元素个数【2023 B卷|200分】
  • 容器安全 - 利用容器的特权配置实现对Kubernetes容器的攻击
  • 深度剖析Android Binder IPC机制
  • 【底层服务/编程功底系列】「大数据算法体系」带你深入分析MapReduce算法 — Shuffle的执行过程
  • CISA 彻底改变了恶意软件信息共享:网络安全的突破
  • macos 12 支持机型 macOS Monterey 更新中新增的功能
  • 代码随想录算法训练营第五十六天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和
  • 01认识微服务
  • 智能电表上的模块发热正常吗?
  • 网络代理技术的广泛应用和安全保障
  • EasyCVR视频汇聚平台显示有视频流但无法播放是什么原因?该如何解决?
  • WuThreat身份安全云-TVD每日漏洞情报-2023-10-13
  • 中文编程工具开发语言开发的实际案例:触摸屏点餐软件应用场景实例
  • 138.【JUC并发编程- 03】
  • React Hooks批量更新问题
  • 竞赛 深度学习YOLO抽烟行为检测 - python opencv
  • cAdvisor监控Docker容器做性能测试