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

这是回调函数吗?请帮我检查并修正我编写的回调函数代码

代码检查与修正

你的代码逻辑框架没问题,但回调函数的实现和调用存在两处关键问题,以下是修正后的完整代码及说明:

let username = prompt("Enter your username :");
let password = prompt("Enter your password :");
// 修正正则:原[a-za-z]是重复错误,改为[a-zA-Z]匹配大小写字母
const userValid = /^[a-zA-Z0-9_.]*$/.test(username);
const passwordValid = /^[a-zA-Z0-9_]*$/.test(password);

// 重构check函数,接收两个回调参数,符合回调设计逻辑
let check = (onSuccess, onError) => {
    if(userValid && passwordValid){
        onSuccess(username); // 传递username到回调,避免依赖全局变量
    }else{
        onError();
    }
}

// 调整成功回调,接收用户名参数
let correct = (name) => {
    // 优化日期格式,输出可读的本地化时间
    let msg = new Date().toLocaleString();
    alert(`Welcome ${name}! Today is ${msg}.`);
}

let not = () => {
    alert(`Given username and password pair is not correct. Please try again!`);
}

// 正确调用check,传入回调函数
check(correct, not);

核心修正点:

  • 正则表达式错误:原正则[a-za-z]是语法冗余且逻辑错误,改为[a-zA-Z]才能正确匹配大小写字母的用户名/密码
  • 回调函数的正确实现:原check函数未接收回调参数,直接调用全局函数,失去了回调的模块化意义;重构后check通过参数接收成功/失败回调,符合回调模式的设计
  • 调用逻辑修正:原代码check(correct,not)是无效调用,因为check之前没有定义参数,修正后可正确传递回调
  • 细节优化:优化日期格式为可读字符串,将用户名作为参数传递给回调,减少全局变量依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:40:37