如何简化LocalStorage中q0-q6变量的ParseInt处理及求和代码?
简化LocalStorage答题分数处理代码的方案
嘿,你的需求很明确——把重复的变量处理逻辑简化,用循环来减少冗余代码对吧?我帮你把这段代码压缩成更简洁、易维护的版本,同时完全保留原有功能:
简化后的完整代码
// 初始化总分数:如果localStorage的points不存在或不是有效数字,默认设为0 let totalpoints = parseInt(localStorage.getItem("points")) || 0; // 循环处理q0到q6的所有答题结果 for (let i = 0; i <= 6; i++) { // 取对应key的值,转成整数,无效则取0,累加到总分 totalpoints += parseInt(localStorage[`q${i}`]) || 0; } // 更新localStorage中的总分 localStorage.setItem("points", totalpoints.toString());
关键优化点说明:
- 初始化总分的简化:用
parseInt(localStorage.getItem("points")) || 0一行替代原来的两个判断。因为如果points不存在,getItem返回null,parseInt(null)得到NaN,||运算符会自动取后面的0;如果points是有效数字,就正常解析。 - 循环处理答题变量:用
for循环遍历0到6的索引,通过模板字符串q${i}动态生成localStorage的key,避免重复声明q0到q6的变量。同样用|| 0处理parseInt返回NaN的情况(比如对应key未初始化时)。 - 变量声明规范:把原来的
var换成let,符合现代JavaScript的块级作用域规范,避免变量提升带来的潜在问题。
这样既保留了原有逻辑的所有功能,代码量大幅减少,后续如果要增加更多答题变量(比如q7、q8),只需要修改循环的终止条件即可,维护性更强。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

