JavaScript变量声明应默认用const,需重赋值时用let,禁用var;const用于常量和固定数据,let用于循环计数和动态更新,共享数据优先置于外层作用域,避免全局污染和重复声明。

变量声明在 JavaScript 基础练习中不是套公式,而是根据数据用途、生命周期和访问范围来选对方式。核心就三点:用 const 作为默认起点,只在确实需要重赋值时改用 let,彻底避开 var。
基础赋值与常量定义场景
数值、字符串、布尔值等固定内容,直接用 const。它强制你在声明时就必须赋值,也防止后续误改。
-
const PI = 3.14159;—— 数学常量,不会变 -
const API_URL = "https://api.example.com";—— 接口地址,整个模块内统一使用 -
const IS_DEBUG = true;—— 开关配置,逻辑清晰
注意:const 不等于“内容不可变”,而是“绑定不可变”。数组或对象本身仍可修改内部项,比如 const list = []; list.push(1); 是合法的。
循环与动态计算场景
需要反复更新的变量,比如计数器、累加器、临时中间值,必须用 let。
for (let i = 0; i ——i每次迭代都会变化,let保证块级隔离-
let total = 0; items.forEach(item => total += item.price);—— 累加过程需多次赋值 -
let userInput = ""; document.getElementById("input").addEventListener("input", e => userInput = e.target.value);—— 用户输入实时更新
避免写成 var i = 0 或漏掉关键字直接 i = 0,前者引发作用域污染,后者意外创建全局变量。
函数间共享数据的处理方式
基础练习中常遇到“一个函数设值,另一个函数读值”的需求。不要一上来就扔到全局。
- 优先把共享变量放在共同的外层作用域里,比如两个函数同属一个 IIFE 或模块顶层
- 若必须跨函数且无封装,再考虑
const或let声明在全局(脚本最上方),但要加注释说明用途 - 绝对避免不加关键字直接赋值,如
count = 0—— 这会挂到window.count上,在浏览器中极易引发冲突
例如两个按钮操作同一计数器,可这样组织:
const counter = { value: 0 };function increment() { counter.value++; }
function show() { console.log(counter.value); }
避免常见陷阱的操作要点
- 声明多个变量时,不要用逗号链式写法混用声明与赋值,比如
let a, b = 1—— 这里a是undefined,容易误判 - 不在条件块或循环体内重复声明同名变量,
let和const不允许重复声明 - 调试时想查全局变量,可以访问
window对象(浏览器环境),但生产代码中应尽量减少对它的依赖
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











