我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript ES的let与const关键字怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript ES的let与const关键字怎么使用

这篇文章主要讲解了“JavaScript ES的let与const关键字怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript ES的let与const关键字怎么使用”吧!

1.let关键字

1.1基本用法

let是ECMAScript 2015新增的一个关键字,用于声明变量,其用法类似于var,与之不同的是声明的变量只能在所在的代码块中使用。

语法结构如下所示:

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];

参数说明:

var1, var2, …, varN:变量名。必须是合法的标识符。

value1, value2, …, valueN:变量的初始值。可以是任意合法的表达式。

示例代码如下所示:

在全局作用域是定义变量

// 定义全局变量var a = 100; // 使用 var 关键字let b = 200; // 使用 let 关键字console.log(a); // 100console.log(b); // 200

我们发现简单的定义一个全局变量两者并没有什么区别。

在块作用域中定义变量

关于块级作用域可以参考这篇。

// 在块作用域中定义变量{  var a = 100; // 使用 var 关键字  let b = 200; // 使用 let 关键字}console.log(a); // 100console.log(b); // 抛出异常,描述信息为 ReferenceError: b is not defined

如果let是在代码块中使用的,其代码块则是一个全新的作用域,在作用域外则无法访问其变量。

ES6 提供的let关键字,特别适合在作为for循环计算器的变量使用,如果这样做的话,其变量只能在循环体内使用,出了这个循环体就会抛出异常,

示例代码如下所示:

// 定义一个循环体for (let v = 0; v < 10; v++) {  console.log("这是一个 for 循环"); // 这是一个 for 循环 * 10}console.log(v); // 抛出异常,描述信息为:ReferenceError: v is not defined

值得注意的是,for循环还有一个特别之处,那就是设置循环变量的那一部分是一个父作用域,而循环体又是一个单独的子作用域,

示例代码如下所示:

for (let v = 0; v < 10; v++) {  let v = 10  console.log(v); // 100 * 10}

得出上面的那种结果就表示两个v并不是处于同一个作用域。

1.2不存在变量提升

如果使用var定义变量,就会发生所谓的变量提成,如下代码所示:

console.log(v); // undefinedvar v = 100;

我们在变量声明之前使用这个值,其并不会报错,而结果是undefined,这是一个奇怪的逻辑,按照一般的逻辑如果这样使用的话,其应该会抛出异常。

ECMAScript 2015中,let关键字就解决了这个奇怪的现象,

如下代码所示:

console.log(v); // 抛出异常 描述信息为 ReferenceError: Cannot access 'v' before initializationlet v = 100;

在上述代码中,则会抛出异常,描述信息为 在声明之前不能使用某变量。

1.3暂时性死区

只要块级作用域中存在let关键字定义的变量,他所声明的变量就绑定 这个区域,不会再受外界的影响。示例代码如下所示:

let v = 100; {  console.log(v); // 抛出异常 描述信息为 ReferenceError: Cannot access 'v' before initialization  // 此变量绑定在该块级作用域中,该作用域只能只用此变量  let v = 200;}

ECMAScript 2015明确规定,如果区块中存在let关键字,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只要在声明之前使用这些变量,就会报错。

总的来说,在块级作用域中,使用let关键字声明变量之前,该变量是不可用的,这在语法上称为暂时性死区 ,英文temporal dead zone 简称TDZ。

1.4不允许重复声明

ECMAScript 2015提供的let关键字是不允许进行重复声明,这点与var又不相同,示例代码如下所示:

// 使用 var 声明变量var a = 100;console.log(a); // 100var a = 1000; // 重复声明console.log(a); // 1000// 使用 let 声明变量let b = 100;console.log(b); // 100let b = 1000; // 重复声明console.log(b); // 抛出异常 描述信息为:SyntaxError: Identifier 'b' has already been declared

如果重复声明会抛出SyntaxError异常

1.5与函数的关系

我们在的函数参数相当于使用let关键字定义的变量,如果在函数体中重新使用let关键字重新声明一个与参数名一样的变量则会抛出SyntaxError异常,当然,函数体中使用let也不允许出现变量提升

// 使用 let 声明变量let a = 100;// 定义一个函数function fun(b) {  // let b = 10; // 抛出异常,描述信息为:SyntaxError: Identifier 'b' has already been declared  console.log(a); // 抛出异常,描述信息为:ReferenceError: Cannot access 'a' before initialization  let a = 200;}fun(20)

2.const关键字

2.1基础用法

const关键字用于声明一个常量,我们可以将const关键字生成的常量理解为不可变的let变量,这里因为const关键字具有let关键字的所有特性,在原基础上增加了不可变这个特性。

所谓的常量就是初始化之后不可变,且声明时必须初始化,示例代码如下:

const a = 2a = 3 // 抛出异常const b // 未初始化抛出异常

但是我们通过const去初始化一个对象或者数组,我们可改变里面的值,它并不是报错,示例代码如下:

const arr = []arr[0] = 100 console.log(arr) // [100]const obj = {}obj.name = '一碗周'console.log(obj) // {name: "一碗周"}

出现这种问题的原因是因为const关键字实际上保证的并不是变量的值不能被改动,而是变量所指向的那个内存地址不被改动,对于简单的数据类型,例如StringNumberBoolean,这些值就保存在变量所指向的那个内存地址,所以它不可以进行二次修改。

但是对于复合类型的数据,主要指ArrayObject,变量指向的内存地址,保存的只是一个指针,const只能保证这个指针指向的内存地址是固定的,至于它指向的内存地址中保存的数据结构是不是可变的,就完全不能控制了。

在实际的开发中,我们避免使用var关键字,而是使用const关键字,需要使用变量时,我们使用let关键字。

感谢各位的阅读,以上就是“JavaScript ES的let与const关键字怎么使用”的内容了,经过本文的学习后,相信大家对JavaScript ES的let与const关键字怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript ES的let与const关键字怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript ES的let与const关键字怎么使用

这篇文章主要讲解了“JavaScript ES的let与const关键字怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript ES的let与const关键字怎么使用”吧
2023-06-21

ES6新增关键字let和const怎么用

这篇文章主要介绍了ES6新增关键字let和const怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ES6新增加了两个重要的JavaScript关键字:let和const
2023-06-29

javascript的let和const命令怎么使用

本篇内容介绍了“javascript的let和const命令怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!let命令基本用法我们都知
2023-07-02

javascript let关键字使用时要注意什么

本篇内容主要讲解“javascript let关键字使用时要注意什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript let关键字使用时要注意什么”吧!说明1、let声明的变量
2023-06-20

C++11关键字const怎么使用

本篇内容主要讲解“C++11关键字const怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11关键字const怎么使用”吧!一、历史按理来说,要想了解一件事物提出的原因,最好的办法
2023-06-25

C语言关键字const与volatile怎么用

今天小编给大家分享一下C语言关键字const与volatile怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、con
2023-06-30

C语言中的Const关键字怎么用

这篇“C语言中的Const关键字怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中的Const关键字怎么用”文章吧
2023-06-29

C++中引用和const关键字怎么用

今天小编给大家分享一下C++中引用和const关键字怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。引用下面的写法定义了
2023-06-29

Linq 中LET关键字的作用是什么

今天就跟大家聊聊有关Linq 中LET关键字的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。LINQ是Language Integrated Query (语言集成查询)。
2023-06-17

java中const关键字的作用是什么

在Java中,const并不是一个关键字,而是一个保留字,表示常量(constant)的意思。在Java中,我们可以使用final关键字来声明一个常量,即用final修饰的变量的值在初始化后不能被修改。以下是const和final关键字的区
2023-09-05

JavaScript中的new关键字怎么用

这篇文章主要介绍了JavaScript中的new关键字怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。new 关键字JavaScript是什么JavaScript是一种直
2023-06-27

Python中nonlocal关键字与global关键字怎么用

小编给大家分享一下Python中nonlocal关键字与global关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python引用变量的顺序: 当前作
2023-06-29

SQL的Merge关键字怎么使用

这篇文章主要介绍“SQL的Merge关键字怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL的Merge关键字怎么使用”文章能帮助大家解决问题。Merge关键字是一个神奇的DML关键字。它
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录