Почему возвращаемое значение моей функции не определено? - PullRequest
0 голосов
/ 30 мая 2020

ребята, я только начинаю заниматься программированием. Теперь я изучаю JavaScript, поэтому у меня есть проблема, у меня есть функция, которая будет запрашивать имя у пользователя.

Затем я хочу создать другую функцию, используя имя для запроса целое число, поэтому, когда я пытаюсь вызвать возвращаемые значения из первой функции, я получаю undefined.

Это мой код:

function getUsername() {
    var f1CustomerName;

    f1CustomerName = prompt("Please enter your name", "Type Here");
    // window.alert("f1CustomerName is: " + f1CustomerName );

    if ( f1CustomerName == null ) {
        return;
    } else if( f1CustomerName == "Type Here" || f1CustomerName == "" ) {
        return;
    } else {
        //window.alert("Hello " + f1CustomerName + "!");
        return f1CustomerName;
    }
}

var nameUser = getUsername();

// ...

function getinteger(nameUser) {
    var integer=prompt(nameUser + " Please enter an integer");
    window.alert("Hello this is your integer: " + integer + "!");
}

getinteger();

Ответы [ 4 ]

2 голосов
/ 30 мая 2020

В вашей версии функции вы ничего не вернули. Следующее должно работать:

function getUsername()
  {
     var f1CustomerName = prompt("Please enter your name", "Type Here");
     if( f1CustomerName == null || f1CustomerName == "Type Here") return "";
     else return f1CustomerName;
 }
 console.log(getUsername());

Вот еще более короткая версия того же самого. Поскольку у вас есть только одна переменная в вашей функции, имеет смысл сократить и ее имя (до nam). Вы даже можете напрямую использовать возвращаемое значение функции getUsername() непосредственно в качестве аргумента функции в вызове функции getinteger().

(Но поскольку у вас есть nameUser в списке параметров функции getinteger(), вы может не получить доступ к глобальной переменной userName из этой функции.)

function getUsername(){
  var nam = prompt("Please enter your name", "Type Here");
  return nam == null||nam=="Type Here" ? "" : nam ;
}
function getinteger(nameUser) {
    var integer=prompt(nameUser + " Please enter an integer");
    window.alert("Hello "+nameUser+", this is your integer: " + integer + "!");
}

getinteger(getUsername());
0 голосов
/ 30 мая 2020

Просто возвращайте значения из ваших операторов if-else

function getUsername() {
    var f1CustomerName;

    f1CustomerName = prompt("Please enter your name", "Type Here");
    //window.alert("f1CustomerName is: " + f1CustomerName );

    if (f1CustomerName == null) {
        return f1CustomerName;
    } else if (f1CustomerName == "Type Here" || f1CustomerName == "") {
        return f1CustomerName;
    } else {
        //window.alert("Hello " + f1CustomerName + "!");
        return f1CustomerName;
    }
}

Также вы должны передать некоторый аргумент вашей функции getinteger.

0 голосов
/ 30 мая 2020

Вы получаете undefined, если значение не возвращается явно.

Ваш существующий код можно значительно упростить.

function getUsername() {
  return prompt("Please enter your name") || null;
}
function getinteger(nameUser) {
  if (!nameUser) {return;}
  const integer = prompt(`${nameUser} Please enter an integer`);
  window.alert(`Hello this is your integer: ${integer}!`); 
}

getinteger(
  getUsername()
);
0 голосов
/ 30 мая 2020

Вы должны указать функции переменную nameUser, чтобы использовать ее при вызове в последней строке:

getinteger(nameUser);
...