Javascript функция возвращает предыдущее значение или не определено - PullRequest
0 голосов
/ 13 апреля 2020

Обучение javascript в пятый раз, базовый c фон и кодирование иностранца (не является носителем английского языка sh, поэтому не смог найти правильный ответ).

У меня есть базовый c функция, которую я хочу вернуть значение, набранное пользователем:

var number = ' ';
function askNumber(){
    number = parseInt(prompt('Type a number :'));
    if (isNaN(number)){
        askNumber();

    }else{
        return number;
    }
}

console.log(askNumber());

Когда вы впервые наберете символы, она снова вызовет функцию. Если во второй раз вы наберете несколько цифр, функция вернет «неопределенное».

-

Теперь, если я добавлю if / else для вызова функции, когда число больше, чем 999 и ниже 0, тогда, если я наберу большее число, а затем верное число, будет возвращено большее число.

Кажется, что оператор return не возвращает правильное значение после повторного вызова функции. .. рекурсивно?

Как убедиться, что

возвращаемое число;

возвращает последнее значение, введенное пользователем?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Это не значит. Вы вызываете функцию, но не возвращаете значение

var number = ' ';
function askNumber(){
    number = parseInt(prompt('Type a number :'));
    if (isNaN(number)){
        // Notice the return statement:
        return askNumber();
    } else {
        return number;
    }
    /*
    You could change the above if...else to:
    return isNaN(number) ? askNumber() : number;
    */
}
console.log(askNumber());

АДРЕСАЦИОННЫЙ КОММЕНТАРИЙ :

function addOne(n) {
  return n + 1;
  // No matter what n is, it returns n + 1;
}
function addTwo(n) {
  let newN = addOne(n); // the return value of addOne comes HERE.
  let newNewN = addOne(newN) // Again, the return value comes here.
  return newNewN;
}
console.log(addTwo(1));
1 голос
/ 13 апреля 2020

Вы забыли заявление return.

var number = ' ';
function askNumber2(){
    number = parseInt(prompt('Type a number :'));
    if (isNaN(number)){
        return askNumber();
    } else {
        return number;
    }
}
...