javascript块级作用域以{ }为边界,let/const声明的变量仅在该代码块内有效;如if、for、单独{ }中声明的变量,块外访问会报referenceerror。

从代码块开始理解 JavaScript 作用域,最直接的方式是盯住 { } —— 它就是块级作用域的“门框”。只要看到一对花括号,并且里面用了 let 或 const 声明变量,你就站在了一个有边界的“小房间”里。
代码块就是作用域的物理边界
if、for、while、switch 甚至单独写的 { let x = 1; },只要包含 let/const,这个 { } 就会生成一个独立作用域。变量只在它内部“活”,出来就“消失”(访问报错)。
if (true) { let a = 10; console.log(a); } console.log(a); // ReferenceErrorfor (let i = 0; i
对比 var,看清块的作用
var 不认块——它只看函数或全局。哪怕写在 if 里,也会“飘”到函数顶部或全局,导致意外共享。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
if (true) { var b = 20; } console.log(b); // 20(没被限制)- 这说明:不是所有 { } 都构成作用域,关键看用什么关键字声明。
嵌套块就像套娃房间
块可以一层套一层,内层能访问外层的 let/const 变量,但反过来不行:
{ let outer = 'a'; { let inner = 'b'; console.log(outer, inner); } console.log(outer); // OK,console.log(inner); // 报错 }- 这种“向外可见、向内不可见”的规则,就是作用域链的起点。
从块出发,自然过渡到函数作用域
函数体本身就是一个大块:function f() { let x = 1; }。这里的 { } 同时也是函数作用域边界。你已经熟悉块,再把“函数声明”看作一种带名字的块封装,就很容易理解为什么函数内变量外部拿不到。
- 不必先背“函数作用域”这个名词,先写几个带 let 的 if/for,跑起来看报错,身体就记住了边界在哪。
- 等你习惯用 let/const 写块,再回头看 var 和函数里的行为,差异一目了然。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










