Node.js使用readline提问时无法解析随机数变量问题求助
问题根源
两个问题导致你遇到的现象:
- 字符串插值语法使用错误:JavaScript 中只有用*反引号(
,键盘左上角与~同按键的符号)*包裹的模板字符串,才能识别${变量名}的插值替换规则。你用单引号'包裹提问文本,里面的${num1}、${num2}`会被当成普通字符串直接输出,不会读取变量值替换。 - 回调逻辑缺失:你在
rl.question的回调函数里只写了console.log(userInput),没有做答案计算、输入校验的逻辑,自然只会把用户输入的内容原样打印出来。
修正后完整代码
// 引入readline模块并初始化交互接口 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // 生成1-10区间的随机整数 let num1 = Math.floor((Math.random() * 10) + 1); let num2 = Math.floor((Math.random() * 10) + 1); // 注意:提问字符串外层用反引号包裹,不是单引号 rl.question(`What is ${num1} + ${num2}? ` , (userInput) => { const correctAnswer = num1 + num2; // 去除输入首尾空格后转为数字 const userAnswer = Number(userInput.trim()); if (userAnswer === correctAnswer) { console.log('回答正确!'); } else { console.log(`回答错误,正确答案是${correctAnswer}`); } // 关闭交互接口,避免程序运行后不退出 rl.close(); });
关键改动说明
- 补全了readline交互接口的初始化、回答后关闭接口的逻辑,保证程序能正常启动、运行结束后自动退出
- 将提问文本的外层包裹符号从单引号替换为反引号,修复随机数变量不替换的问题
- 新增正确答案计算、输入格式转换、正误判断的逻辑,实现加法答题的核心功能
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

