通过最小化可运行代码片段,系统拆解JavaScript中变量(const/let)、循环(for/while)与函数的核心语法、执行逻辑与协作模式。
JavaScript基础语法实例:变量、循环与函数的最小化代码演示
时间:2026-10-30
浏览:646
文章目录
一、变量:数据的存储与状态控制
在现代 JavaScript 规范(ES6+)中,声明变量的核心关键字是 const 与 let。我们应当主动放弃过时的 var,以避免变量提升与全局污染问题。
- const(常量声明):用于声明值不可重新绑定的变量。只要该标识符后续不会指向新的内存引用,就应该首选
const。 - let(变量声明):用于声明可变状态。当后续需要修改数值、累加统计或切换标记时使用。
// 最小化变量示例
const unitPrice = 25; // 常量:单价固定
let quantity = 2; // 变量:数量可变
quantity = quantity + 1; // 更新状态
const total = unitPrice * quantity;
console.log(total); // 示例输出:75
理解变量的关键在于理解其“生命周期”与“重新赋值限制”。若对 const 声明的基础数据类型进行重新赋值,引擎会直接抛出 TypeError: Assignment to constant variable 错误,从语法层面杜绝非预期的状态篡改。
二、循环:控制语句的重复执行
当需要对一组数据或在特定条件满足时重复执行计算,就需要使用循环结构。JavaScript 中最核心且基础的两种是 for 循环与 while 循环。
1. for 循环:固定次数与索引遍历
for 循环由三个关键表达式组成:初始化变量、循环终止条件、步进更新表达式。三者用分号分隔,每次执行完循环体后触发步进更新。
// 最小化 for 循环:从 0 计数到 2
for (let i = 0; i < 3; i++) {
console.log("当前计数: " + i);
}
// 示例输出:
// 当前计数: 0
// 当前计数: 1
// 当前计数: 2
2. while 循环:基于条件的持续运行
while 循环仅包含一个条件判断表达式。只要该表达式求值为真,循环体就会持续执行,适合未知具体循环次数但明确终止条件的场景。
// 最小化 while 循环:步进递减
let stock = 3;
while (stock > 0) {
console.log("剩余库存: " + stock);
stock--; // 关键:更新条件变量,防止死循环
}
// 示例输出:
// 剩余库存: 3
// 剩余库存: 2
// 剩余库存: 1
在编写 while 循环时,循环体内部必须存在能够改变判断条件的语句(如递减 stock--)。若条件永远为真,将导致浏览器标签页或运行进程卡死崩溃。
三、关键字与循环类型的决策策略
初学者常常困惑何时选用 const 或 let,以及何时选择 for、while 或现代的 for...of。遵循一套清晰的条件分支,能让代码兼具可读性与健壮性:
- 变量选择原则:默认所有变量都声明为
const;只有明确需要后续给标识符赋新值时(如累加器、计数器),才使用let。 - 循环选择原则:处理纯数组遍历优先考虑
for...of;需要基于数字索引控制步长时使用标准for;等待某个外部状态变化时使用while。
四、函数:逻辑的封装与功能复用
函数是编写模块化代码的基础。它接收外部传入的参数(输入),在作用域内执行处理逻辑,并通过 return 返回运算结果(输出)。若省略 return,函数默认返回 undefined。
1. 函数声明(经典语法)
使用 function 关键字定义,支持函数提升,适合定义通用的业务处理功能:
// 最小化基础函数
function add(a, b) {
return a + b;
}
const result = add(10, 20);
console.log(result); // 示例输出:30
2. 箭头函数(ES6+ 极简语法)
箭头函数使用 () => {} 符号,写法紧凑。当单行返回表达式时,还可省略花括号和 return 关键字:
// 最小化单行箭头函数
const multiply = (x, y) => x * y;
console.log(multiply(4, 5)); // 示例输出:20
五、综合实例:变量、循环与函数的串联演练
现在我们通过一个极简场景将三者结合:编写一个用于统计“及格成绩平均分”的函数。该场景涵盖:
- 使用
const接收不可变输入与基准阈值; - 使用
let维护累加总和与有效数量计数; - 使用
for...of循环遍历传入的成绩列表; - 通过函数返回计算得到的平均分数。
// 综合最小化可运行代码
function calculatePassedAverage(scores) {
const passThreshold = 60; // 常量:及格基准线
let passedSum = 0; // 可变状态:累加成绩
let passedCount = 0; // 可变状态:及格人数
// 循环结构:遍历每项数据
for (const score of scores) {
if (score >= passThreshold) {
passedSum += score;
passedCount++;
}
}
// 避免除以 0 的防御式逻辑
if (passedCount === 0) {
return 0;
}
return passedSum / passedCount;
}
// 执行并验证结果
const testScores = [45, 80, 90, 55, 70];
const average = calculatePassedAverage(testScores);
console.log("及格平均分: " + average); // 示例输出:及格平均分: 80
六、常见编码误区与排查要点
- 误区一:混淆 const 对象的属性修改与重新赋值。声明
const user = { name: "A" }时,user.name = "B"是合法的,因为对象地址未变;但执行user = {}会引发报错。若需要完全不可变对象,应搭配Object.freeze()。 - 误区二:循环内误用 var 导致闭包索引共享。在
for (var i = 0; ...)中,变量i是全局或函数作用域变量;改为let具有独立的块级作用域,能确保每次迭代保留正确的数值。 - 误区三:遗漏函数 return 语句。如果函数用于计算某个具体值,必须明确写出
return value。未显式 return 的函数在调用并赋值时会默认得到undefined。
掌握 const/let 的状态控制、for/while 的循环判定以及 function 的模块封装,就具备了编写绝大多数 JavaScript 业务逻辑的基石能力。建议在日常开发中保持代码最小化、职责单一化的风格,循序渐进搭建更复杂的程序体系。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。