demo阐述js中let和var 的不同
当我们使用 var 和 let 来声明变量时,它们在作用域和变量提升方面的差异会产生一些不同的结果。下面是一个示例来说明这些差异。
// 使用 var 声明变量
function varExample() {
console.log(x); // 输出 undefined
var x = 10;
console.log(x); // 输出 10
if (true) {
var x = 20;
console.log(x); // 输出 20
}
console.log(x); // 输出 20
}
varExample();
// 使用 let 声明变量
function letExample() {
console.log(y); // 抛出 ReferenceError: y is not defined 错误
let y = 10;
console.log(y); // 输出 10
if (true) {
let y = 20;
console.log(y); // 输出 20
}
console.log(y); // 输出 10
}
letExample();
在上述示例中,我们分别使用 var 和 let 声明了变量 x 和 y。我们可以看到以下不同之处:
变量提升:使用 var 声明的变量 x 在整个函数作用域中都是可见的,因此在第一个 console.log(x) 中输出 undefined,而不是抛出错误。这是因为变量 x 被提升到作用域的顶部,但其赋值操作在后面的语句中才执行。而使用 let 声明的变量 y 不会发生变量提升,因此在第一个 console.log(y) 中抛出了 ReferenceError 错误。
块级作用域:在 if 语句块中,使用 var 声明的变量 x 覆盖了外部作用域中的 x,导致在第三个 console.log(x) 中输出 20。这是因为 var 声明的变量只有函数作用域,没有块级作用域的概念。而使用 let 声明的变量 y 存在块级作用域,在 if 语句块中声明的 y 不会影响外部作用域中的 y,因此在第三个 console.log(y) 中输出的是外部作用域中的值 10。
通过这个示例,我们可以清楚地看到 var 和 let 在作用域和变量提升方面的差异。使用 let 声明变量可以更好地控制作用域,并避免一些意外的错误。因此,在现代 JavaScript 开发中,推荐优先使用 let 来声明变量。
demo阐述js中let和var 的不同的更多相关文章
- JS中let和var的区别
js中let和var定义变量的区别 let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781 ...
- js中 慎用for(var o in arrays) 遍历数组,for(var i,i< objects.length;i++)与for(var i,n = objects.length;i<n;i++) 的性能区别
原文:js中 慎用for(var o in arrays) 遍历数组,for(var i,i< objects.length;i++)与for(var i,n = objects.length; ...
- 第28篇 js中let和var
let与var 在js中声明一个变量除了一个var 还有一个let的声明.对于var 在前面的作用域中已经讲过,这次主要说下二者的区别: 在MDN上有这样的一个demo: var list = d ...
- JS中const、var 和let的区别
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...
- js中let和var的区别 不懂得加QQ 2270312758
js中使用let定义变量的时候,是需要使用严格模式的,我看到网上有的博客说:如果在不使用严格模式的情况下,使用let会报错,但是在实验的过程中,我直接定义了let变量而且也没有使用严格模式,并没有报任 ...
- js中的let\var\const
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- 如何HTML标签和JS中设置CSS3 var变量
一.HTML标签中设置CSS变量 如下: <div style="--color: #cd0000;"> <img src="mm.jpg" ...
- 关于js中的for(var in)遍历属性报错问题
之前遇到过这个问题,但是没找到问题的所在,将for(var i in array){} 改成了for(var i ;i<array.length;i++)循环,但是今天又遇到了,mark一下错 ...
- js中let和var定义变量的区别
let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...
- ts和js中let和var定义变量的区别
javascript 严格模式 第一次接触let关键字,有一个要非常非常要注意的概念就是”JavaScript 严格模式”,比如下述的代码运行就会报错: let hello = 'hello worl ...
随机推荐
- 探秘Transformer系列之(6)--- token
探秘Transformer系列之(6)--- token 0x00 概述 语言是人类特有的概念.作为一个抽象符号,人是可以理解每个语言单词的意义的,但是现在的NLP语言模型无法直接的从感知中抽象出每个 ...
- 给Typecho加上心知天气-网页天气插件
给你的博客添加个知心天气的天气预报,代码看下面 <!-- 知心天气--> <div id="tp-weather-widget" class="navb ...
- JavaGUI - [04] BoxLayout
题记部分 一.简介 为了简化开发,Swing引入了一个新的布局管理器:BoxLayout.BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器: ...
- 【论文随笔】多行为序列Transformer推荐(Multi-Behavior Sequential Transformer Recommender)
前言 今天读的论文为一篇于2022年7月发表在第45届国际计算机学会信息检索会议(SIGIR '22)的论文,文章主要为推荐系统领域提供了一个新的视角,特别是在处理用户多行为序列数据方面,提出了一种有 ...
- 谷歌 Chrome 浏览器离线安装 vue devtools 插件
由于某些原因,Chrome 应用商店访问不了,所以只能离线安装 vue devtools 插件,离线安装也有两种方法. 方法一:自编译 vue devtools 插件 这方法要求动手能力强的同学. 前 ...
- TPC-H 研究和优化尝试
TPC-H测试提供了8张表,最近做这个测试,记录下过程中的关键点备忘. 1.整体理解TPC-H 8张表 2.建立主外键约束后测试22条SQL 3.分区表改造,确认分区字段 4.重新测试22条SQL 5 ...
- linux centos8 mirrorlist: No URLs in mirrorlist,更新yum源
前言 由于官方已经在2021/12/31停止了对CentOS 8的支持,所以需要更新 yum 源,才能使用 更新镜像源 这里用的是阿里的 yum 镜像源 将源文件备份 cd /etc/yum.repo ...
- Linux下Oracle client(sqlplus)安装和配置
分类专栏: Linux 数据库 文章标签: Linux Oracle Client sqlplus 方向键版权1.下载rpm包http://www.oracle.com/technetwork/top ...
- Nginx配置跨域,覆盖后端服务跨域配置
本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置. 先看下后端代码跨域配置: 主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名. @Bean public Co ...
- dxTabbedMDIManager1关闭窗体
procedure TfrmJianKongXinXi.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFre ...