关于for...of循环计算数组元素平方的写法疑问
关于for...of循环两种写法的区别分析
首先明确:你的写法功能上是可以得到正确输出的,但老师的写法是更符合编程最佳实践的选择,核心区别在于是否引入不必要的变量赋值和副作用。
你的写法的细节
for(let num of numbers){ num *= num; console.log(num)}
这里的num *= num是把循环变量num重新赋值为它的平方。因为数组numbers里的元素是基本类型(数字),for...of遍历到的num是原数组元素的副本,修改这个变量不会影响原数组本身。所以最终console.log输出的确实是每个元素的平方,功能没问题,但多了一步没必要的赋值操作。
老师写法的优势
for (let num of numbers) { console.log(num * num);}
这种写法的好处在于:
- 更简洁紧凑:直接在输出语句里计算平方,省去了额外的变量赋值步骤,代码行数更少,逻辑更直接。
- 无副作用:没有修改循环变量
num的原始值,保持了变量的纯净性。如果后续在循环中需要用到原数字(比如题目扩展要求同时输出原数和平方),不会因为之前的赋值导致逻辑错误。 - 可读性更强:一眼就能看明白是输出当前元素的平方,不需要追踪
num的赋值变化,降低了理解成本。
总结
你的写法在当前题目下能实现需求,但老师的写法是更优的编程实践——避免不必要的变量修改,让代码更简洁、更安全。
内容的提问来源于stack exchange,提问作者Osamu Midoriya
相关产品推荐
相关产品推荐

