首页 > 其他分享 >let 和 const的区别

let 和 const的区别

时间:2023-04-27 17:33:55浏览次数:31  
标签:const 变量 区别 作用域 let var 声明

let 和 const的区别

在 JavaScript 中,letconst 都是用来声明变量的关键字,它们的主要区别在于变量的可变性和作用域范围。

  • let 声明的变量是可变的(mutable),可以重新赋值,但不能重新声明。
  • const 声明的变量是不可变的(immutable),不能重新赋值,也不能重新声明。
let x = 10;
x = 20; // 可以重新赋值
console.log(x); // 输出 20

let x = 30; // 不能重新声明,会报错

const y = 10;
y = 20; // 不能重新赋值,会报错

const y = 30; // 不能重新声明,会报错

const 声明的变量并不是完全不可变,对于复杂类型的数据(如对象和数组),虽然不能对变量进行重新赋值,但是可以修改其中的属性或元素,因为这些属性或元素仍然指向内存中的同一块地址

const obj = { name: 'John', age: 20 };
obj.age = 30; // 可以修改对象的属性
console.log(obj); // 输出 { name: 'John', age: 30 }

const arr = [1, 2, 3];
arr[1] = 4; // 可以修改数组元素
console.log(arr); // 输出 [1, 4, 3]

因此,当需要声明一个不可变的变量时,应该使用 const;当需要声明一个可变的变量时,应该使用 let

在 TypeScript 中,可以使用 varletconst 关键字来声明变量。不过,推荐使用 letconst 而不是 var,因为 letconst 是 ES6 引入的新特性,它们有以下好处:

  1. 作用域:letconst 是块级作用域,而 var 是函数作用域,使用 letconst 可以减少变量污染和提高代码可读性。
  2. 重复声明:var 可以重复声明变量,但 letconst 不允许重复声明同一个变量,这可以避免潜在的问题。
  3. 不可变性:const 声明的变量是不可变的,这可以确保变量的值不会被意外改变,减少程序错误。

因此,尽可能使用 letconst 来声明变量,并避免使用 var

标签:const,变量,区别,作用域,let,var,声明
From: https://www.cnblogs.com/xxdmua/p/17359564.html

相关文章

  • abstract class和interface有什么区别?
    声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静......
  • Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方......
  • List与HashMap区别,key,value,感谢火龙果,dgqbcht,awusoft帮助
    首先要感谢不想要妮称,dgqbcht,awusoft友情帮助Map是一个映射,是key-value值对.Map在java1.0以后进行了修改,使其能够与普通的集合相融.在Map的内部定义了内部接口Entry,主要就是要讲key和value以集合(Set)的形式来体现.List是集合的一个分支,是一个接口.List中的元素有顺序(输......
  • Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
    Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别SYS用户:SYS,默认密码为CHANGE_ON_INSTALL,当创建一个数据库时,SYS用户将被默认创建并授予DBA角色,所有数据库数据字典中的基本表和视图都存储在名为SYS的方案中,这些基本表和视图对于Oracle数据库的操作时非常重要的。为了维护......
  • 表和视图的区别
    表和视图的区别区别:1、视图是已经编译好的sql语句。而表不是2、视图没有实际的物理记录。而表有。3、表是内容,视图是窗口4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能由创建的语句来修改5、表是内模式,试图是......
  • MissingServletRequestParameterException: Required request parameter 'xxx' for me
    关于简单参数传递的一个异常先前情提要一下,在练习一个带分页的员工查询请求功能,接口文档描述如下其中页码跟记录数是必须参数,然后有个按姓名模糊查询,这个参数是可有可无的然后我最初写的代码长这样用@RequestParam注解来获取这个url中携带的简单参数然后测试页面的时候......
  • 微信网页静默授权(snsapi_base与snsapi_userinfo区别)
    1、区别:有无授权完整服务弹框2、业务:有的网页只需要用户openid进行绑定,所以不需要弹框授权完整服务,用户会觉得整体体验不好。3、snsapi_base:scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。注:静默的另一种:对于已关注公众号的用户,......
  • Codeforces Round 866 (Div. 1) C. The Fox and the Complete Tree Traversal (构造)
    传送门题目大意:  给定一个有n个点的树,我们可以任意选择一个点作为起点,这个点可以跳到跟自己距离为1或者距离为2的点,已经到达的点不能再到达(最终必须回到起点),询问是否存在一种方案可以从一个点出发经过所有的点最终再回到这个点来。  输入一个整数n。紧接着输入n-1条边。大......
  • const关键字_常量指针与指针常量
    变量被const修饰,能且仅能被赋值一次。指针被const修饰,只在初始化时指向一个对象,且不能更改指向常量:不能被二次赋值constinta;intconsta;常量指针和指针常量constint*p;//*p不能被二次赋值int*constp;//p不能被二次指向constint*constp;//*p不能第二次赋值,指针p不......
  • vue2与vue3的区别
    一.vue2和vue3双向数据绑定原理发生了改变vue2的双向数据绑定是利用ES5的一个APIObject.definePropert()对数据进行劫持结合发布订阅模式的方式来实现的。vue3中使用了es6的ProxyAPI对数据代理。相比于vue2.x,使用proxy的优势如下defineProperty只能监听某个属性,不......