news 2026/6/12 19:01:46

typescript-var和let作用域

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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。避免出现上面说的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 0:29:28

Katalon StudioAssist:智能化测试助手

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

作者头像 李华
网站建设 2026/6/10 18:37:08

凤希AI伴侣开发手记:那些只有深度使用才暴露的“缺点”

大家好&#xff0c;我是凤希。现在是2026年1月6号晚上七点多&#xff0c;我才开始整理昨天的工作。这几天&#xff0c;我的作息完全颠倒了&#xff0c;经常早上七八点才睡&#xff0c;下午四点才起&#xff0c;活脱脱一个“美国时间”。为啥&#xff1f;因为这几天我几乎把所有…

作者头像 李华
网站建设 2026/6/10 17:18:22

电动无轨道平车哪个厂家强

电动无轨道平车哪个厂家强在工业运输领域&#xff0c;电动无轨道平车以其灵活、便捷等优势&#xff0c;成为众多企业物料搬运的重要工具。然而&#xff0c;面对市场上众多的厂家&#xff0c;选择一个实力强劲的厂家至关重要。杭州龙立&#xff1a;技术创新先锋杭州龙立在电动无…

作者头像 李华
网站建设 2026/6/10 17:09:26

传统机器学习(如xgboost、随机森林等)和深度学习(如LSTM等)在时间序列预测各有什么优缺点?

传统机器学习方法&#xff08;如XGBoost、随机森林&#xff09;在时间序列预测中通常需要将时间序列数据转换为监督学习格式。这类方法的优势在于训练速度快、可解释性强&#xff0c;并且在中小规模数据集上往往表现稳健。此外&#xff0c;它们对超参数的敏感度相对较低&#x…

作者头像 李华