首页 > 解决方案 > 这样做的正确方法是什么?我得到未定义的结果,因为该变量尚未被赋值

问题描述

如果我将 0 分配给结果,它将变为未定义,返回语句也返回未定义,因为结果未定义。我该如何解决这个问题?(我是 JS 新手)

let numOne = prompt('Enter a number');
let numTwo = prompt('Enter another number');
let op = prompt('Wirte how you would calculate these numbers');

let result = 0;

function calc(numOne, numTwo, op, result) {
    if (op === 'add') {
        return result = (numOne + numTwo)
    } else if (op === 'minus') {
        return result = (numOne - numTwo)
    } else if (op === 'multiply') {
        return result = (numOne * numTwo)
    } else if (op === 'divide') {
        return result = (numOne / numTwo)
    } else return 'Something went wrong!'
}
answer = document.getElementById('main-p').innerHTML = (`You chose to ${op} ${numOne} and ${numTwo}.The result is ${result}!`)
<p id="main-p"> </p>

标签: javascriptundefined

解决方案


您需要像这样更新您的代码。

注意事项

1)调用函数如let result = calc(Number(numOne), Number(numTwo), op);

2) 转换成数字。由于提示将以字符串形式返回,您必须将它们转换为数字,例如calc(Number(numOne)

3)只需返回输出。无需在函数中指定

let numOne = prompt('Enter a number');
let numTwo = prompt('Enter another number');
let op = prompt('Wirte how you would calculate these numbers');

let result = calc(Number(numOne), Number(numTwo), op);

function calc(numOne, numTwo, op) {
    if (op === 'add') {
        return (numOne + numTwo)
    } else if (op === 'minus') {
        return (numOne - numTwo)
    } else if (op === 'multiply') {
        return (numOne * numTwo)
    } else if (op === 'divide') {
        return (numOne / numTwo)
    } else return 'Something went wrong!'
}
answer = document.getElementById('main-p').innerHTML = (`You chose to ${op} ${numOne} and ${numTwo}.The result is ${result}!`)
<div id='main-p'></div>


推荐阅读