千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:长沙千锋IT培训  >  技术干货  >  let和const的区别?

let和const的区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-13 18:47:36

一、let和const的区别

Let

let现在已经成为变量声明的优选。这并不奇怪,因为它是对var声明的改进。它也解决了我们刚刚介绍的var问题。让我们考虑一下为什么会这样。

let 是块级作用域,块是由 {} 界定的代码块,大括号中有一个块。大括号内的任何内容都包含在一个块级作用域中。

因此,在带有let的块中声明的变量仅可在该块中使用。

let greeting = ‘say Hi’;

let times = 4;

if (times > 3) {

    let hello = ‘say Hello instead’;

    console.log(hello); // say Hello instead”

}

console.log(hello); // hello is not defined

我们看到在其代码块(定义它的花括号)之外使用hello会返回错误。这是因为let变量是块范围的.

let 可以被修改但是不能被重新声明,就像var一样,用let声明的变量可以在其范围内被修改。但与var不同的是,let变量无法在其作用域内被重新声明。

Const

用const声明的变量保持常量值。 const声明与let声明有一些相似之处

const 声明的变量在块级作用域内,像let声明一样,const声明只能在声明它们的块级作用域中访问

const 不能被修改并且不能被重新声明,这意味着用const声明的变量的值保持不变。不能修改或重新声明。因此,如果我们使用const声明变量,那么我们将无法做到这一点:

const greeting = ‘say Hi’;

greeting = ‘say Hello instead’; // error: Assignment to constant variable.

或者这个这样:

const greeting = ‘say Hi’;

const greeting = ‘say Hello instead’; // error: Identifier ‘greeting’ has already been declared

因此,每个const声明都必须在声明时进行初始化。

当用const声明对象时,这种行为却有所不同。虽然不能更新const对象,但是可以更新该对象的属性。 因此,如果我们声明一个const对象为

const greeting = {

    message: ‘say Hi’,

    times: 4,

};

同样不能像下面这样做:

const greeting = {

    words: ‘Hello’,

    number: ‘five’,

}; // error:  Assignment to constant variable.

但我们可以这样做:

greeting.message = ‘say Hello instead’;

这将更新greeting.message的值,而不会返回错误。

延伸阅读:

二、用 const 还是用 let

ES6 里新增了两种声明变量的方式,let 和 const,加上原来的 var,一共就有三种方式来声明变量了。那到底该用哪个呢?关于“尽可能不用 var” 这一点,大家应该没有什么意见分歧(其实还是有少数人不这么想的),关于“是用 let 还是用 const”,社区里主要有两种不同的观点:

1. 默认全用 let,只在符合一些写代码的人的主观判断条件的时候用 const,下面举个这样的“主观判断条件”的例子(实际代码中用到 const 的几率大概会是 0.1%):

你能 100% 确定该变量永远不会在其它的代码行里被重新赋值,但是该变量的初始值有可能在未来会被调整(有点配置项的意思),且

该变量的初始值是个数字字面量(或者多个数字组成的数学运算表达式)、字符串字面量、布尔字面量、数组字面量、对象字面量、正则字面量、symbol 字面量”(打引号是因为 symbol 其实没有字面量),且

该变量是个全局变量,或者是模块内的全局变量

2. 默认全用 const,只有该变量需要被重新赋值才用 let (实际代码中用到 const 的几率大概会是 95%),和上面举的三个主观判断条件对比一下差异:

不能 100% 确定该变量永远不会被重新赋值(可能只是现在是没被重新赋值,说不定未来会),或者该变量的初始值不是字面量,比如说是个函数调用表达式,或者该变量是个局部变量

名列前茅种用法是非常主观的,比如你用 const 的判断条件有可能就和我上面举的不一样,比如你也许觉得局部变量也可以用 const ?或者你觉的数组和对象是可变的值,怎么能用 const 呢?因为很主观,所以一个团队的代码风格很难达成一致,甚至只有你一个人维护的代码,const 的用法在不同的时间内也没有统一的规律,因为可能连你自己都没有明确的想过:“什么时候我应该用 const”,说白了就是“看心情”。而第二种用法是非常客观的,简单直接,没有含糊不清的地方,如果采用这种用法,至少团队代码风格的统一是不成问题的。

以上就是关于let和const的区别的内容希望对大家有帮助。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

怎么自定义Visual Studio代码折叠识别的区域?

2023-10-13

hcip和hcnp有什么区别?

2023-10-13

layui和vue的区别?

2023-10-13

最新文章NEW

cs和bs区别?

2023-10-13

DOF和HP有什么区别?

2023-10-13

hold和host的区别?

2023-10-13

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>