目录
for
循环是 JavaScript 中最基础且灵活的语法结构之一。大多数开发者熟悉传统的 for (let i=0; i<n; i++)
,但很少有人深入挖掘其语法允许的“非主流”用法。本文将探索一些非常规的 for
循环命名和高级技巧,展示其潜在应用场景与注意事项。
1. 多变量声明与作用域控制
传统的 for
循环允许在初始化部分声明多个变量,甚至通过逗号操作符实现复杂逻辑:
// 双变量控制,作用域隔离
for (let i = 0, j = 10; i < j; i++, j--) {
console.log(i, j); // 输出:0 10, 1 9, ..., 4 6
}
// 混合作用域(var 和 let)
for (var k = 0, len = array.length; k < len; k++) {
// len 被提升至函数作用域,避免每次循环重复计算长度
}
这段代码展示了 JavaScript 中 var 和 let 的不同作用域特性:
- var 的变量提升(Hoisting)特性:
- 使用 var 声明的变量会被提升到其所在函数作用域的顶部
- 这意味着变量可以在声明之前被访问,但值为 undefined
- 在这个例子中,len 变量会被提升到函数作用域的顶部
代码优化:
for (var k = 0, len = array.length; k < len; k++) {
// 循环体
}
- 这里将 array.length 存储在 len 变量中是一个性能优化
- 如果不存储,每次循环都会重新计算 array.length
- 对于大型数组,这种优化可以带来性能提升
现代 JavaScript 的最佳实践:
现在推荐使用 let 而不是 var,因为 let 有更清晰的作用域规则
for (let k = 0, len = array