JavaScript let 和 var 区别

在日常写网页脚本时,不少新手常会在声明变量的关键字上犯懵——比如明明用了“var”,结果某个场景下变量的值突然“乱跑”,换成“let”就稳了。其实这两个关键字的核心差异,藏在变量的“藏身地方”和“活动范围”里,用生活里的小例子就能轻松看懂。

先搞懂:var 是“全局摊派的便利贴”

你可以把用“var”声明的变量,想象成公司前台贴在公共白板上的便利贴——整个公司(代码的全局范围,或者某个函数内部)所有人都能看到、修改它。举个最简单的例子:

JavaScript let 和 var 区别

比如我们要循环打印1到3,每个循环里做个延迟,最后输出循环变量。用var写的话,结果会全是3,而不是1、2、3。这是因为var的变量是“全局共用”的,循环结束后变量的最终值是3,延迟函数执行时,读到的就是这个最终值,就像所有人都改了同一张便利贴,最后拿到的是最后一次写的内容。

而且var还有个“骚操作”:同一作用域里,重复声明同一个var变量不会报错,只会悄悄覆盖之前的值。就像你在同一块白板上贴了两张一样的便利贴,后面的会直接盖住前面的,没任何提示。

再看:let 是“部门专属的便签本”

用“let”声明的变量,更像公司每个部门自己的专属便签本——只有当前部门(代码的块级作用域,比如一个花括号包裹的循环、if判断)能用到,外面的人碰不到,也不会互相干扰。还是刚才的循环例子,换成let的话,每个循环都会生成一个全新的专属变量,延迟函数执行时,拿到的是对应循环的变量值,最后就能正确输出1、2、3了。

这就像每个部门做自己的项目,用自己的便签,不会拿错别的部门的内容,也不会互相改到。另外,let有个严格的“专属规则”:同一作用域里,不能重复声明同一个let变量,不然浏览器会直接报错提醒,就像你在同个部门的便签本上写了两次同一个任务,系统会提示你写错了,避免混乱。

实际开发里,选谁更靠谱?

很多老开发者习惯用var,但现在新的JavaScript语法里,let已经成了更稳妥的选择。比如在写循环、条件判断这类需要“专属变量”的场景,用let不会出现变量值被意外覆盖的bug,调试起来也更轻松。而var仅适合一些特殊的旧代码兼容场景,现在基本不用作为首选。

最后再总结个小口诀:var是全局“共用贴”,值易改、易覆盖;let是块级“专属本”,不串值、不重复,日常开发选let,少踩90%的变量bug坑。

上一篇 Swift语言在移动端开发中的核心优势与应用场景科普