首页 > 其他分享 >var、let、const 之间的区别

var、let、const 之间的区别

时间:2024-07-17 09:29:31浏览次数:11  
标签:const 变量 作用域 let var 声明

1. 作用域

  • var: 具有函数作用域或全局作用域。这意味着在一个函数内部声明的变量在整个函数内部都是可见的,而在函数外部声明的变量在整个脚本或全局范围内可见。
  • let 和 const: 具有块级作用域。这意味着变量仅在其声明的代码块内(如if语句或循环)可见。

2. 变量提升 (Hoisting)

  • var: 变量声明会被提升到作用域的顶部,但初始化不会。这意味着你可以在声明之前引用变量,但它会被初始化为undefined
  • let 和 const: 没有变量提升。你不能在声明之前引用这些变量,否则会导致一个ReferenceError。在声明之前引用变量的区域被称为“暂时性死区”(Temporal Dead Zone, TDZ)。

3. 重复声明

  • var: 允许在同一个作用域内重复声明相同的变量名,后面声明会覆盖之前的声明。
  • let 和 const: 不允许在同一作用域内重复声明相同的变量名。

4. 变量的可变性

  • var 和 let: 宣告的变量值是可以改变的。
  • const: 声明的变量值是常量,一旦赋值就不能再次被赋值。但是,如果const变量指向的对象或数组,其内容可以修改,只是不能重新指向另一个值。

5. 全局对象属性

  • var: 在全局作用域下声明的var变量会自动成为全局对象(如window在浏览器环境)的属性。
  • let 和 const: 在全局作用域下声明,不会成为全局对象的属性。

6. 标准版本

  • var: 存在于ES 3及更高版本。
  • let 和 const: 引入于ES6。

标签:const,变量,作用域,let,var,声明
From: https://blog.csdn.net/m0_75247890/article/details/140485011

相关文章

  • 极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风
    全文链接:http://tecdat.cn/?p=24182最近我们被客户要求撰写关于极值理论的研究报告,包括一些图形和统计输出。本文用R编程语言极值理论(EVT)以确定10只股票指数的风险价值(和条件VaR)使用Anderson-Darling检验对10只股票的组合数据进行正态性检验,并使用BlockMaxima......
  • auto,static,const,extern,volatile,register
    auto关键字用于声明变量的生存期为自动,auto修饰的是自动类型的变量,对于局部变量默认就是自动类型的变量,如果没有赋初值它的值就是随机值。static 修饰的变量或者函数有如下特点:static修饰的局部变量,可以延长变量的生命周期(不会被多次初始化)static修饰的全局变量或者函数只......
  • bundletool工具使用(Android aab包安装)
    ......
  • bluz glib编程 --- GVariant Format Strings 介绍
    GVariantFormatStrings类型字符串实例分析(sa{sv}as)外层是元组类型,内含三个成员,分别是字符串s字典类型数组a{sv},字符串作为key,variant作为value字符串类型数组as(i@ii)外层是元组类型,内含三个成员,分别是gint类型数字类型ivariant类型@i,对应数字......
  • kotlin标准函数let apply等分析
    在kotlin中,在standard.kt中定义了一些标准的方法,这里对这些方法进行挨个的阅读TODO方法这方法比较简单,就是直接抛出一个异常,这里有一个inline关键字,定义的是一个内联方法,内联方法的意思是调用时整个方法的代码一起替换过去,下面是TODO方法的源码publicinlinefunTODO(......
  • C++11标准库 条件变量 <condition_variable> 梳理
    目录<condition_variable>condition_variable类类方法生产者消费者模型--阻塞队列单条件变量版condition_variable_any模板类区别优缺点<condition_variable>条件变量是C++11提供的另外一种用于等待的同步机制,它能阻塞一个或多个线程,直到收到另外一个线程发出的通知或者超时......
  • Theia 版 CCS 之 Delete 的工程去哪里了?
    当CCS左侧工程列表框达到一定数量时,为了方便观看,大部分人会选择在工程框里删除删除方式如下选中工程右键之后选择Delete最后选择OK你跟着我的步骤来了吗?那你就大错特错啦!等到你下次再打开这个工程的时候你会发现这个工程完全没有你编写的程序你写的程序不见了!!!那么你......
  • 【译】The danger of TaskCompletionSource class
    来自SergeyTepliakov的另一篇https://devblogs.microsoft.com/premier-developer/the-danger-of-taskcompletionsourcet-class/#comments当使用async/await时,如果您想手动控制任务的生存期,TaskCompletionSource<T>类是一个非常有用的工具。下面是TaskCompletionSource的一个......
  • pthon中pyglet框架的使用方法
    pyglet框架的使用方法可以分为以下几个步骤:一、安装pyglet首先,需要通过pip安装pyglet。在命令行中输入以下命令:pipinstallpyglet确保Python环境配置正确,以便顺利安装pyglet库。二、创建窗口使用pyglet创建游戏窗口是游戏开发的第一步。以下是一个简单的示例代码,展......
  • 设计模式 - Singleton pattern 单例模式
    文章目录定义单例模式的实现构成构成UML图单例模式的六种实现懒汉式-线程不安全懒汉式-线程安全饿汉式-线程安全双重校验锁-线程安全静态内部类实现枚举实现总结其他设计模式文章:定义单例模式是一种创建型设计模式,它用来保证一个类只有一个实例,并且提供一个访问......