You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript新手编写的密码检查器无输出问题求助

代码问题排查与修正

嘿,我来帮你把代码里的问题一个个揪出来,这些小细节直接导致了你的代码没有任何输出:

主要错误点

  • 字符串未加引号:var pass = ji3or; 里的 ji3or 是字符串字面量,必须用单引号或双引号包裹,否则JS会把它当作变量名,找不到对应变量时会直接抛出ReferenceError,代码执行直接中断。正确写法:var pass = "ji3or";
  • 函数定义语法错误:function passCheck { 缺少了括号,函数定义必须带括号(即使没有参数),正确写法:function passCheck() {
  • 对象结构不合法:你定义的variations对象中,每个校验项的格式有误。比如digits:{ /\d/.test(pass),errorMsg:"..." },第一个部分是布尔值但没有对应的键名,JS无法识别这个结构。需要给校验结果添加一个明确的键(比如valid),改成:digits: { valid: /\d/.test(pass), errorMsg: "Must contain at least 1 digit!" }
  • 缺失遍历执行逻辑:你提到要用forEach遍历校验项,但代码里没有实现这部分逻辑,所以即使前面的问题都修复,也不会输出任何内容。

修正后的完整代码

var pass = "ji3or"; 
function passCheck() { 
  var variations = { 
    digits: { valid: /\d/.test(pass), errorMsg:"Must contain at least 1 digit!"}, 
    lower: { valid: /[a-z]/.test(pass), errorMsg:"Must contain at least 1 lower case letter!"}, 
    upper: { valid: /[A-Z]/.test(pass), errorMsg:"Must contain at least 1 upper case letter!"}
  };

  // 遍历所有校验项,输出不通过的错误信息
  Object.values(variations).forEach(item => {
    if (!item.valid) {
      console.log(item.errorMsg);
    }
  });
}

// 调用函数执行校验逻辑
passCheck();

代码说明

  1. 给pass变量添加了字符串引号,避免变量未定义错误;
  2. 修正了函数定义的语法错误;
  3. 给每个校验项添加了valid键,让对象结构合法可识别;
  4. 使用Object.values()获取所有校验项的数组,再用forEach遍历,判断valid为false时打印对应错误信息;
  5. 最后调用passCheck()函数触发整个校验流程。

现在运行这段代码,就能看到对应的错误输出啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:07:00