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

使用constructor构造函数实现prompt两数求和时仅读取第一个输入值问题

问题原因

你的代码存在3个核心逻辑错误:

  • 执行顺序颠倒:read方法里先执行求和计算,再给存储输入值的变量赋值,第一次调用时this.x还未定义,计算结果为NaN
  • 没有存储两次输入的有效状态:仅用一个this.x存储输入值,第二次调用read会直接覆盖第一次的输入结果,无法拿到两个数做完整运算
  • 冗余逻辑错误:求和代码后多余的代码块+return语句,导致求和逻辑永远不会生效,每次调用read只会给this.x赋值然后直接结束

修正后代码(兼容你原有的初始化固定加数逻辑)

function Num (firstNum) {
    this.firstNum = firstNum;
    this.total = firstNum;
    this.read = function() {
        // 每次调用读取一次输入,直接累加到总和
        const inputVal = +prompt('请输入数字');
        // 兼容非数字输入,默认加0
        this.total += isNaN(inputVal) ? 0 : inputVal;
    };
}
let num = new Num(10); 
num.read(); 
num.read(); 

alert(num.total);

如果你不需要初始化固定加数,纯求两个用户输入数字的和,可以用下面的版本:

function Num () {
    this.inputs = [];
    this.read = function() {
        const inputVal = +prompt('请输入数字');
        this.inputs.push(isNaN(inputVal) ? 0 : inputVal);
    };
    this.getSum = function() {
        return this.inputs.reduce((prev, curr) => prev + curr, 0);
    }
}
let num = new Num(); 
num.read(); 
num.read(); 

alert(num.getSum());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:06:00