网站首页 > 技术文章 正文
变量是任何编程语言的基本块之一,每种语言定义我们如何声明变量以及如何与变量交互的方式可以成就或毁掉一门编程语言。这意味着每个开发人员都应该能够理解如何有效地使用变量、它们的规则和特性。在今天的教程中,我们将学习如何在JavaScript中声明、交互和作用域变量。我们将介绍新的概念和重要的JavaScript关键字,如var、let和const。
声明变量
现在JavaScript有三个不同的关键字来声明一个变量——var、let和const。每一种都有自己的特性。让我们首先为这三个关键字制作一个简单的比较表,然后深入研究。
变量作用域
JavaScript中的作用域是指决定变量的可访问性(可见性)的代码的上下文(或部分)。在JavaScript中,我们有两种范围,本地的和全局的。虽然局部范围可以有不同的含义。
让我们通过一些示例来了解函数的作用域是如何定义的。假设你定义了一个变量message:
在console.log中打印变量message,其值为Hello World。这一点毫无疑问,但是如果我们在声明变量的地方稍微改变一下会发生什么呢?
if语句创建了一个局部块作用域,由于我们使用了' const ',所以变量只针对该块作用域声明,不能从外部访问。
块范围
块基本上是一段代码(零个或多个语句),由一对花括号分隔。
正如我们已经讨论过的,let和const的使用允许我们定义存在于块作用域中的变量。接下来,我们将通过使用不同的关键字来生成新的作用域来构建非常相似的示例:
让我们解释一下这个问题,因为起初看起来可能有些奇怪。在我们的外部范围中,我们定义的变量x1值为1。然后,我们仅使用花括号就创建了一个新的块作用域,这很奇怪,但在JavaScript中完全合法,在这个新作用域中,我们创建了一个新变量(与外部作用域的变量分开),也命名为x1。这是一个全新的变量,仅在该范围内可用。
现在相同的示例具有命名范围:
不要执行下面的代码;不要执行下面的代码;不要执行下面的代码;
您能猜出上面的代码怎么了吗?如果运行它会发生什么?让我解释一下, x3正如在外部范围中声明的用于while比较一样 x3 === 1,通常在while语句内部,我将能够重新分配 x3一个新值并退出循环。但是,由于我们在x3块范围内声明了一个新值,因此无法再x3从外部范围更改,因此,“ while”条件将始终评估为true产生无限循环,该循环会挂起您的浏览器,或者如果您使用的是在NodeJS上运行它的终端将打印很多2。
除非实际重命名这两个变量,否则修复此特定代码可能会很棘手。
到目前为止,在我们的示例中,我们使用的是const,让我们用var试试相同的代码会发生什么
猜你喜欢
- 2024-10-16 JS中(a==1 && a==2 && a==3)可以在JavaScript中计算为“true”吗?
- 2024-10-16 JavaScript 的这个难点,毁掉了多少程序员
- 2024-10-16 前端开发之彻底搞懂this指向(前端this指向问题)
- 2024-10-16 Top 26 JavaScript面试问题和答案
- 2024-10-16 JS 经典实例知识点整理汇总【实践】
- 2024-10-16 苦恼于JavaScript中的reduce函数?五分钟讲透彻
- 2024-10-16 前端基础:JavaScript(前端基础题)
- 2024-10-16 一句话彻底理解JS中的回调(Callback)函数
- 2024-10-16 面试中被问到最多的 19 个 JavaScript 问题
- 2024-10-16 JavaScript 中的特殊数值有哪些?(javascript有哪些常用的属性和方法)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)