Javascript 如果语句未被执行/到达

Javascript 如果语句未被执行/到达,javascript,math,if-statement,web,Javascript,Math,If Statement,Web,下面的JavaScript代码试图使用毕达哥拉斯定理计算与直角三角形相关的值。在执行计算之前,检测各种输入组合的部件有问题。这只是一系列的if语句,它们都非常相似,但最后一个不会执行 ,以防你们中的一些人想弄乱代码 以下是我遇到问题的函数: function drawNumbers() { if(cathetusAKnown) { cathetusA.value = cathetusANumber; } if(cathetusBKnown) {

下面的JavaScript代码试图使用毕达哥拉斯定理计算与直角三角形相关的值。在执行计算之前,检测各种输入组合的部件有问题。这只是一系列的
if
语句,它们都非常相似,但最后一个不会执行

,以防你们中的一些人想弄乱代码

以下是我遇到问题的函数:

function drawNumbers() {
    if(cathetusAKnown) {
        cathetusA.value = cathetusANumber;
    }

    if(cathetusBKnown) {
        cathetusB.value = cathetusBNumber;
    }

    if(hypotenuseKnown) {
        hypotenuse.value = hypotenuseNumber;
    }

    if(angleAKnown) {
        angleA.value = angleANumber;
    }

    if(angleBKnown) {
        angleB.value = angleBNumber;
    }
}

function calculate() {
    updateNumbers(); 

    //If CathetusA and B are known, calculate the rest
    if(cathetusAKnown && cathetusBKnown) {
        if(!hypotenuseKnown) {
            calcHypotenuse();
        }

        if(!angleAKnown) {
            calcAngleA();
        }

        if(!angleBKnown) {
            calcAngleB();
        }
    }

    //If CathetusA and the hypotenuse are known, calculate the rest
    if(cathetusAKnown && hypotenuseKnown) {
        if (!cathetusBKnown) {
            calcCathetusB();
        }

        if(!angleAKnown) {
            calcAngleA();
        }

        if(!angleBKnown) {
            calcAngleB();
        }
    }

    //If CathetusB and the hypotenuse are known, calculate the rest
    if(cathetusBKnown && hypotenuseKnown) {
        if (!cathetusAKnown) {
            calcCathetusA();
        }

        if(!angleAKnown) {
            calcAngleA();
        }

        if(!angleBKnown) {
            calcAngleB();
        }
    }

    drawNumbers();
}
最后一种情况(计算给定的cathetus B和斜边的cathetus A)是可以的,但公式是错误的

假设
hyp²=a²+b²
你知道
a=sqrt(hyp²-b²)
,相反你计算的是相反的(
sqrt(b²-hyp²)
),这将导致
NaN
,因为你将取一个负数的平方根


另一个错误也存在于其他类似情况中(它没有给出一个
NaN
,但是结果是错误的,因为你正在添加斜边的平方和天琴座的平方。

也许倒数第二个会引发异常?你有什么错误吗?我试着在Chrome的JS控制台中查找,但据我所知,我没有任何错误。

你怎么可能告诉我哪些字段是已知字段,哪些字段是未知字段,尤其是第二次点击“计算”时?这是一个很好的问题。老实说,我没有想到。我会立即修复。谢谢!我一定忽略了这一点!我真是个白痴,哈哈。你对“另一个类似案例”指什么?@Elias:计算cathetus B时,给定cathetus A和斜边。你用的是加法而不是减法(hyp-cat)。啊,我明白了。我做这个的时候一定很困。好吧,谢谢你的帮助!