在 JavaScript(以及 Node.js)的学习过程中,变量声明是构建开发思维的基础技能。var、let、const 三种声明方式在实际开发场景中存在本质差异,本文将通过 4 个维度剖析它们的核心区别。
一、作用域维度:块级 vs 函数级
1. var 的函数作用域特性
使用 var 声明的变量具有穿透代码块的特性:
if(true) {
var name = "张三";
}
console.log(name); // 正常输出"张三"
在循环结构中暴露更明显:
for(var i=0; i<5; i++){...}
console.log(i) // 输出5...但开发者期望i不应存在
2. let/const 的块级作用域特性
ES6新增的变量声明方式严格遵循块级隔离:
if(true) {
let age = 25;
const PI = 3.14;
}
console.log(age); // ReferenceError
console.log(PI); // ReferenceError
实际应用场景:Node.js 模块开发中使用块级作用域可避免全局污染。