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

一文彻底了解ES6中的var、let、const基本用法以及暂时性死区和变量提升的区别

         ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。有三个关键字可以声明变量:var、let、const。其中 var 在ECMAScript 的所有版本中都可以使用,而 const let 只能在ECMAScript 6 及更高版本中使用。

一、var

        var可以定义单个变量和同时定义多个变量,在定义多个变量时用逗号隔开

       

       在 ECMAScript 中 var 关键字声明的变量可以重复声明,但是赋值操作会覆盖前面已经给变量赋的值。值不仅可以改变,数据类型也可以改变。

        

        var声明的全局变量全局作用域会挂载到 window 对象上,可以使用window. 的形式访问该变量,或者直接使用变量名的方式。在函数体内部的用var声明的变量是局部变量,当省略 var时,当前变量会定义为全局变量,但是当我要得到这个变量的值时,我们需要先执行一下函数

二、let

        let 声明的范围是块作用域,而 var 声明的范围是函数作用域。

         let 不可以重复声明变量,var 可以重复声明变量

        切记同一作用域下 let 和 var 混合重复定义一个变量会报错

        let的全局声明不会成为 window 对象的属性( var 声明的变量则会)

三、const

      const 的行为和 let 基本相同,唯一一个重要的区别就是它在声明变量的同时必须初始化变量

      const 声明的变量不允许修改

      const 也是不可重复声明

      const 声明的作用域也是块

      const 声明限制只适用于它指向变量的引用。换句话说,如果 const 变量引用的是一个对象,那么修改这个对象内部的值不违反 const 的限制。引用未发生改变就行。

     

重点来了:var变量提升和let暂时性死区的区别!!!

        变量提升本质上相当于把声明变量和初始化都提前到当前作用域顶部

       

        var声明的变量会把变量声明放到当前作用域顶部,并且赋值为undefined

        通过 let 声明的变量直到它们的定义被执行时才初始化。在变量初始化前访问该变量会导致 ReferenceError。该变量处在一个自块顶部到初始化处理的“暂存死区”中。(暂时性死区相当于把声明变量提升的当前作用域顶部,并没有初始化操作

        你就记住let声明的变量在真正的声明前是不能进行任何操作的!!!

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

相关文章:

  • 深入浅出单例模式(全网最详细且通俗易懂讲解)
  • GPIO是啥
  • 都这麽大了还不快了解IDS?
  • HashMap笔记(自用+更新中)
  • String.format()的使用
  • 蓝牙beacon 功能简介
  • Kylin的介绍、使用和原理架构(Kylin3.0和Kylin4.0,Cube,去重原理,性能优化,MDX For Kylin,BI工具集成)
  • C++ MFC程序框架结构解析(详细)
  • vue系列 —— vue-route详细使用方法
  • Sqlmap常用命令总结
  • sudo权限管理
  • 是不是都把SELinux给忘了?
  • git命令归纳整理及如何使用
  • JDBC连接数据库小白级教程
  • 设计模式学习(三):Adapter适配器模式
  • JavaFX17 现代 Java 客户端权威指南(七)
  • Unity-3D游戏开发套件指南(入门篇)-免费资源
  • 如何快速而准确地进行 IP 和端口信息扫描:渗透测试必备技能
  • PID超详细教程——PID原理+串级PID+C代码+在线仿真调参
  • 一文彻底搞懂 TSL 流程
  • 计算机网络一篇文章就能掌握,拓扑结构图文解析,协议详解等
  • Java中indexOf()的用法
  • 一文搞懂AOP 通俗易懂
  • NTFS(微软专用文件系统)
  • vault-服务器密码/证书管理工具
  • Content-type的几种常见类型及php://input的使用
  • STM32之RCC(1)
  • ASP是什么?
  • 爬虫解析——Xpath的安装及使用(五)
  • OpenCore 黑苹果安装教程