首页 > 编程语言 >JavaScript中var、let、const的使用和区别

JavaScript中var、let、const的使用和区别

时间:2023-06-19 15:22:14浏览次数:70  
标签:const 变量 作用域 JavaScript let var 声明

var:

  • var 是声明变量的主要关键字,它的作用域是函数作用域
  • 函数作用域:意味着变量在函数内部声明是可见的,在函数外部声明是不可见的
  • var 声明的变量可以被重新声明和赋值,它可以在同一个作用于下多次声明同一个变量

let:

  • let 的作用域是块作用域,块作用域可以是函数、条件判断等内部{}包围的区域
  • 与 var 不同的是,使用 let 声明的变量只有在块作用域才有效,并且不会被提升(hoisting),必须在使用之前先进行声明
  • let 变量也可以被重新赋值,但是不能重新声明变量

const:

  • const 用来声明常量,也就是用来声明一旦赋值就不能发生改变的变量
  • const 与 let 相似,作用域也是块作用域,也不会被提升
  • 与 let 和 var 不同的是,const 声明的变量必须在声明时进行初始化,并且不能再被赋值
  • const 声明的常量仅限于绑定的引用不变,而不是值本身不改变,对象或数组是可以修改属性或元素,但是不能重新赋值为不同的对象或数组

总结

  • 使用 var 声明的变量具有函数作用域,可以被重新赋值和声明
  • 使用 let 声明的变量具有块作用域,可以被重新赋值,但是不能再同一作用域下再次声明
  • 使用 const 声明的变量也具有块作用域,但是不能重新赋值和声明

推荐使用做法:

  • 如果变量的值不需要再重新赋值,可以使用 const
  • 如果变量的值需要重新赋值,可以使用 let
  • 尽量避免使用 var,因为他的作用域和变量提升可能导致一些意外情况

标签:const,变量,作用域,JavaScript,let,var,声明
From: https://www.cnblogs.com/yuzai-xin/p/17491254.html

相关文章

  • Understanding JavaScript Garbage Collection: Dive into Reference Counting and Ma
    JavaScript,theprogramminglanguageoftheweb,isoftenpraisedforitsabilitytohandlememorymanagementautomatically.TheJavaScriptengine'sgarbagecollectorplaysapivotalroleinthisprocess.Today,we'lltakeadeepdiveintotwom......
  • new 和 delete 运算符
     下面是使用new运算符来为任意的数据类型动态分配内存的通用语法:newdata-type;在这里,data-type 可以是包括数组在内的任意内置的数据类型,也可以是包括类或结构在内的用户自定义的任何数据类型。让我们先来看下内置的数据类型。例如,我们可以定义一个指向double类型的指针......
  • 在 JavaScript 中,判断一个对象是否为空有几种方法。
    使用Object.keys()方法检查对象的键值对数量:functionisObjectEmpty(obj){returnObject.keys(obj).length===0;}//示例用法constobj1={};console.log(isObjectEmpty(obj1));//输出:trueconstobj2={name:'John',age:25};console.log(isObjectEm......
  • SELECT和DELETE执行计划的不同选择
    模拟表名,A表的数据量约1000万,B表的数据量约500万,进行连接,其中这几个条件字段,都创建了索引,SQL>SELECT*fromAainnerjoinBbona.ID=b.idwhereb.C_DATE<=trunc(sysdate)-1000;我们知道在CBO优化器模式下,Oralce会基于Cost成本,来选择执行计划。从执行计划看,......
  • 数据面节点kubelet一直报错找不到静态Pod路径
    问题现象问题分析pkg/kubelet/config/file_linux.gostartWatch方法pkg/kubelet/kubelet.gomakePodSourceConfig函数cmd/kubelet/app/options/options.goAddKubeletConfigFlags函数kubelet启动参数中--pod-manifest-path已是""说明有别的地方设置了默认值为/etc/kuberne......
  • JavaScript 显示数据
    JavaScript显示数据JavaScript可以通过不同的方式来输出数据:使用window.alert()弹出警告框。使用document.write()方法将内容写到HTML文档中。使用innerHTML写入到HTML元素。使用console.log()写入到浏览器的控制台。window.alert()window.alert()是一个......
  • [AGC034E] Complete Compress
    [AGC034E]CompleteCompress考虑这道题之前,我们先想一个经典问题:对于一颗有根树,每个节点上可能放一颗棋子,且不同子树上的棋子可以相互抵消。那么,我们设maxson为最大子树包含的棋子数,sun【root】为root的所有子树的棋子总数,很容易得到,如果sum【root】-maxson>=maxson,那么它们一......
  • DisableThreadLibraryCalls与DLLMain死锁
    DisableThreadLibraryCalls与DLLMain死锁 1、首先写个简单的DLL,用来验证1234567891011121314151617181920212223242526272829303132BOOL APIENTRYDllMain( HMODULE hModule,                       ......
  • 到底什么是php javascript
    php就是将 静转动(静态页面转为动态页面),有些页面在你访问之前他不是真实存在的,而是依据你提交的东西而动态生成的html页面,比如使用搜索引擎时候,你提交了关键字php,搜索引擎会到数据库中找到与php相关的信息,然后将这些信息排序和组装成一个html页面,将这个实时生成的页面返回给你的浏......
  • JavaScript-Vue
    2Vue2.1Vue概述通过我们学习的html+css+js已经能够开发美观的页面了,但是开发的效率还有待提高,那么如何提高呢?我们先来分析下页面的组成。一个完整的html页面包括了视图和数据,数据是通过请求从后台获取的,那么意味着我们需要将后台获取到的数据呈现到页面上,很明显,这就需要我们使......