You need to enable JavaScript to run this app. JavaScript密码生成器优化:如何替代冗余if语句实现复选框字符选择逻辑
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript密码生成器优化:如何替代冗余if语句实现复选框字符选择逻辑

密码生成器重复代码优化方案

你完全不需要枚举所有复选框的勾选组合,只需要动态拼接可用字符集即可,整体逻辑可以简化到10行以内。

优化思路

  • 初始化可用字符集为默认的小写字母,符合所有复选框未勾选时仅用小写的规则
  • 提前获取三个复选框的勾选状态,避免重复查询DOM
  • 依次判断每个复选框是否勾选,勾选就将对应字符集合并到可用字符集中
  • 最后统一调用一次GeneratePassword方法生成密码

优化后代码

// 提前获取复选框状态,避免重复查询DOM
const useCaps = document.getElementById('caps').checked;
const useNumbers = document.getElementById('numbers').checked;
const useSymbols = document.getElementById('symbols').checked;

// 初始化基础字符集为小写字母
let charsArray = [...lowercase];
// 按需拼接其他字符集
if (useCaps) charsArray = charsArray.concat(caps);
if (useNumbers) charsArray = charsArray.concat(numbers);
if (useSymbols) charsArray = charsArray.concat(symbols);

// 统一生成密码
password = GeneratePassword(passwordLength, charsArray);

方案优势

  • 没有冗余重复代码,完全符合DRY原则
  • 扩展性极强,后续如果需要新增字符类型,只需要加一行判断逻辑即可,不需要新增大量分支
  • 代码可读性更高,其他开发者一眼就能看懂字符集的拼接逻辑

内容的提问来源于stack exchange,提问作者Carlos D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:45:02