Написание функции для вызова других функций без вызова пользовательских запросов - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь написать функцию, которая вызывает функцию других, чтобы получить окончательный ответ. Однако, если я попытаюсь вызвать функции halfNumber и squarenumber, я также собираюсь вызывать отдельные подсказки из этих функций, и я не хочу, чтобы это произошло. Есть ли способ, которым я могу реструктурировать свой код, чтобы я мог вызывать crazyFunction, не вызывая запросы от других функций?

Javascript:

var el1 = document.getElementById('squarenum');
el1.onclick = squarenumber;

var el2 = document.getElementById('halfnum');
el2.onclick = halfNumber;

function squarenumber(n){

    n = prompt("Enter a number to be squared");
    var result = n * n;


    var txt = document.getElementById('square_answer');
    txt.innerHTML = "The result of squaring the number " + n + " is " + result; 
    return result;
}

function halfNumber(num){

    num = prompt("Enter a number to be halved");
    var result = num/2;
    var txt = document.getElementById('halved_answer');
    txt.innerHTML = "Half of " + num + " is " + result;
    return result;

}

function crazyFunction(num){
    result1 = squarenumber(num);
    result2 = halfNumber(result1);

    return result2;
}

HTML

<ol>
    <li><a href="#" id="squarenum">squarenumber</a></li>

    <p id='square_answer'>The square is...</p>
    <li><a href="#" id='halfnum'>halfNumber</a></li>
    <p id='halved_answer'>Half of the number is...</p>
    <li><a href="#" id='crazyfunction'>crazyfunction</a></li>
    <p id='crazy_answer'>This function is a surprise...</p>
</ol>

1 Ответ

0 голосов
/ 03 апреля 2020

Есть несколько способов решить вашу проблему. Во-первых, постарайтесь понять, почему вы создаете эти функции, и понять требования.

Ожидаемый результат заключается в том, что, когда squarenumber или halfNumber вызываются по отдельности, вы хотите отобразить подсказку, в противном случае, если они Вызванный изнутри crazyFunction, желаемый вывод не должен показывать подсказку.

Итак, мы можем видеть, что флуктуация потока управления находится в момент вызова функции. Поэтому для вас было бы наиболее разумно найти решение этой проблемы на основе переданных аргументов в подфункции squarenumber и halfNumber.

Основы c Решение

function crazyFunction(num) {
    boolean shouldShowPrompt = false;
    let result1 = squarenumber(num, shouldShowPrompt);
    let result2 = halfNumber(result1, shouldShowPrompt);

    return result2;
}

А затем пример halfNumber:

function halfNumber(num, shouldShowPrompt ) {

    if (shouldShowPrompt) {
        num = prompt("Enter a number to be halved");
    }

    var result = num / 2;
    var txt = document.getElementById('halved_answer');
    txt.innerHTML = "Half of " + num + " is " + result;
    return result;

}

Надеюсь, это поможет.

...