typescript-var和let作用域

什么是作用域?

作用域可以理解为某个变量在某个范围内是可以访问到。

var是函数作用域(声明的函数内)、全局作用域(在哪里都可以访问到)

let是块级作用域(即程序中的大括号{}包含的范围内)

看下面的例子:

console.log("---------------------"); { var c = 100; } console.log(c); { let c = 10; console.log("block area ", c); } console.log(c); console.log("======================");

看以上示例中输出的两个100都是输出的var声明的变量c,因为var声明的是函数作用域或全局作用域(在这里是全局的),所以输出发的时候是100;

而let声明的是块级作用域,即只在大括号内有效{},所以只有在大括号内输出的才是10,即使大括号外有输出这个变量,也不能输出这个块里面的值。

再看下面的例子:

function test() { for (var i = 0; i < 10; i++) { setTimeout(() => { console.log(i); }, 0); } } test(); function test1() { for (var i = 0; i < 10; i++) { (function (index) { setTimeout(function () { console.log(index); }, 0); })(i); } } test1(); function test2() { for (let i = 0; i < 10; i++) { setTimeout(() => { console.log(i); }, 0); } } test2();

这个有点绕,

test函数中使用的是var,是函数作用域,而setTimeout是异步函数,for的循环执行完了(这里是同步执行的),最后i变成了10,而setTimeout会在同步函数后执行,所以最后输出了函数作用域内的变量i,即10.

test1函数中也是使用的var,但是输出正常,这里有一个区别是使用了立即执行函数,即内部有一个function,这里把var的参数传给了index,而index是在这个内部函数作用域内有效,这个在书面上理解为捕获了i的值。即把i的值给了index,index是函数作用域内的,异步setTimeout执行的时候 ,输出了内部函数中的index的值。(这个是我个人的理解啊,有误差的大家可以指正)

test2函数中使用的是let,这个是块级作用域,即{}捕获了i的值。可以避免var声明引起的问题。在未来的工作中要尽量使用let。避免出现上面说的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高精度双极板体积电阻率测试仪

高精度双极板体积电阻率测试仪 说明高精度双极板体积电阻率测试仪①电阻率ρ不仅和导体的材料有关&#xff0c;还和导体的温度有关。在温度变化不大的范围内&#xff0c;几乎所有金属的电阻率随温度作线性变化&#xff0c;即ρρo(1at)。式中t是摄氏温度&#xff0c;ρo是O℃时…

2026年香港服务器走CN2线路具有哪些优势?

2026 年香港服务器走 CN2 线路具有哪些优势?先说 CN2&#xff0c;CN2 线路作为中国电信的优质网络通道&#xff0c;通过独立路由和优先级保障&#xff0c;为香港服务器赋予了显著优势。1.速度优势&#xff1a;低延迟与高带宽的完美结合CN2线路通过优化路由跳转&#xff0c;大幅…

2026年香港服务器走CN2线路具有哪些优势?

2026 年香港服务器走 CN2 线路具有哪些优势?先说 CN2&#xff0c;CN2 线路作为中国电信的优质网络通道&#xff0c;通过独立路由和优先级保障&#xff0c;为香港服务器赋予了显著优势。1.速度优势&#xff1a;低延迟与高带宽的完美结合CN2线路通过优化路由跳转&#xff0c;大幅…

都在做「WAN优化」,南凌科技的方案究竟有何不同?

在企业数字化转型过程中&#xff0c;WAN优化已成为常见需求。面对市场上众多看似雷同的“降本增效”方案&#xff0c;IT管理者往往难以抉择&#xff1a;究竟哪家能真正解决问题&#xff1f;事实上&#xff0c;许多传统WAN优化方案仅从单点入手&#xff0c;例如数据压缩或协议加…

香港服务器为何需要IPMI?好用吗

在当今数字化时代&#xff0c;香港作为全球重要的数据中心枢纽&#xff0c;其服务器托管服务备受企业青睐。对于使用香港服务器的用户而言&#xff0c;IPMI(智能平台管理接口)是一个关键且实用的技术工具。那么&#xff0c;香港服务器为何需要IPMI?它又是否好用呢?香港服务器…

彻底解决启动问题:如何修复错误代码0xc000000e一站式教程

遇到错误代码0xc000000e可能意味着您的系统启动文件有问题&#xff0c;这可能导致电脑无法正常启动。本文将详细介绍错误代码0xc000000e的原因及其修复方法&#xff0c;帮助您快速恢复电脑正常使用。错误代码0xc000000e通常与什么系统问题相关&#xff1f;1.启动配置数据&#…

喜报!这3本SCI/ESCI成功解除“On Hold”!

据科睿唯安数据库全年更新记录统计&#xff0c;2025年度共668本期刊的变动。其中&#xff0c;新增收录期刊481本&#xff0c;被剔除期刊129本&#xff0c;名称变更期刊58本。被剔除的期刊中&#xff1a;• ESCI&#xff1a;93本&#xff08;占比最高&#xff0c;主要剔除区域&a…

【心脏病检测】基于matlab GUI检测胎儿心脏病【含Matlab源码 14854期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

云原生ETL方案:AWS Glue vs Azure Data Factory

云原生ETL方案&#xff1a;AWS Glue vs Azure Data Factory 关键词&#xff1a;云原生、ETL、AWS Glue、Azure Data Factory、数据处理 摘要&#xff1a;本文旨在对比云原生环境下的两大ETL方案——AWS Glue和Azure Data Factory。我们将深入剖析它们的核心概念、工作原理、算法…

免费听书神器喜马拉雅v9.4.32.3精简版分享 解锁付费内容 无限畅听

平时喜欢听音频的小伙伴&#xff0c;应该都对喜马拉雅不陌生吧&#xff1f;作为国内最大的音频分享平台&#xff0c;上面的内容真的太丰富了&#xff0c;不管是通勤路上解闷的段子、睡前助眠的小说&#xff0c;还是学习提升的培训课程、了解时事的新闻资讯&#xff0c;基本上想…

牛批了,Windows搬家神器

C盘有的时候会出现空间不够的情况&#xff0c;大部分老机器会经常出现&#xff0c;解决办法是重做系统&#xff0c;但是这种方法非常耗时间&#xff0c;而且安装的各种软件需要重新装一遍&#xff0c;非常的麻烦。如果不想做系统的话&#xff0c;可以用今天给大家推荐的C盘软件…

Katalon StudioAssist:智能化测试助手

在自动化测试领域&#xff0c;高效地设计、生成和维护测试脚本一直是测试工程师面临的核心挑战。Katalon Studio作为一款广泛使用的集成测试平台&#xff0c;其内置的AI助手——StudioAssist&#xff0c;正致力于通过人工智能技术重塑这一工作流程。本文将系统性地介绍StudioAs…

FTP登陆工具SmartFTP Client Enterprise v10.0.3300 多语便携版下载 FTP文件传输神器

经常需要在本地电脑和远程服务器之间传输文件的小伙伴&#xff0c;肯定都遇到过这些糟心事&#xff1a;用的FTP客户端只支持单一协议&#xff0c;遇到SFTP、WebDAV格式的文件就束手无策&#xff1b;大文件传输到一半突然断网&#xff0c;重新传输又要从零开始&#xff0c;既浪费…

Katalon StudioAssist Ask模式:工作区内的AI测试助手

在自动化测试领域&#xff0c;高效地编写脚本、理解复杂概念或排查问题是日常工作的一部分。传统上&#xff0c;这需要开发者翻阅大量文档、在社区提问或反复调试。Katalon Studio 推出的 StudioAssist Ask 模式&#xff0c;就像一位始终在线的专家伙伴&#xff0c;将人工智能的…

如何打开大文件不崩溃不卡顿?EmEditor v25.4.4绿色便携版下载

经常处理大文件的小伙伴&#xff0c;肯定都遭遇过这样的崩溃时刻&#xff1a;用系统记事本打开几GB的日志文件&#xff0c;直接无响应卡死&#xff1b;换其他文本编辑器&#xff0c;要么加载半天打不开&#xff0c;要么打开后滚动卡顿、编辑延迟&#xff0c;甚至直接闪退丢失内…

敏捷的质量合伙人

在敏捷项目中&#xff0c;测试团队不是被弱化的角色&#xff0c;而是从 “事后验证者” 升级为 “全程质量赋能者”&#xff0c;核心价值是把质量内建于敏捷交付的全流程&#xff0c;而非仅在迭代末尾做 “验收把关”。即使是 PO 程序员就能推进的小型项目&#xff0c;测试的介…

php+nginx在cookie中设置了HttpOnly属性

该网站cookie没有设置HttpOnly标志。如果您在cookie中设置了HttpOnly属性&#xff0c;那么通过js脚本将无法读取到cookie信息&#xff0c;是防止XSS攻击的一种安全措施。 攻击者可以通过document对象获取Cookie,进行xss等攻击。 需要在网站服务器代码上修改,设置办法举例:heade…

2026必备!本科生论文写作软件TOP9测评

2026必备&#xff01;本科生论文写作软件TOP9测评 2026年本科生论文写作软件测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着高校学术要求的不断提升&#xff0c;本科生在撰写论文过程中面临越来越多挑战&#xff0c;包括文献检索效率低、格式规范复杂、内容逻辑性不足…

NVIDIA Rubin平台重磅亮相CES:六芯协同重塑AI算力,2026下半年量产落地

从行业演进视角来看&#xff0c;CES虽仍冠以消费电子展之名&#xff0c;但如今已成为科技巨头发布前沿算力技术的重要阵地&#xff0c;其技术辐射范围早已突破消费端边界。NVIDIA作为AI算力领域的领军者&#xff0c;此次率先召开芯片厂商发布会&#xff0c;重磅推出下一代Rubin…

人工智能之核心基础 机器学习 第八章 无监督学习概述

人工智能之核心基础 机器学习 第八章 无监督学习概述 文章目录人工智能之核心基础 机器学习8.1 什么是无监督学习&#xff1f;&#x1f4cc; 定义&#xff1a;从“没有答案”的数据中找规律8.2 无监督学习的三大核心任务1️⃣ 聚类&#xff08;Clustering&#xff09;——“物…