Сохранение функции возврата внутри const не определено - PullRequest
0 голосов
/ 28 апреля 2019

Я бросаю себе вызов в небольшом JS-приложении, о нескольких баскетбольных командах, где я вычисляю средний счет трех игр, в которые я играю. Я застрял на основной вещи, я не понимаю.

Сначала вот код:

// simple stringbuilder function
function appendStringBuilder(string, tag) {
  return document.querySelector(tag).append(string);
}

// function calculates average score of team
function avgScoreCalc(obj) {
  const values = Object.values(obj);
  let avgSum = 0;
  for (var i = 0; i < values.length; i++) {
    if (Number.isInteger(values[i])) {
      avgSum += values[i];
    }
  }
  avgSum = avgSum / 3;
  return Math.round(avgSum);
}

function challenge2(ObjName, teamName, firstGame, secondGame, thirdGame) {
  var ObjName = {
    teamName: teamName,
    firstGame: firstGame,
    secondGame: secondGame,
    thirdGame: thirdGame,
  };
  avgScoreCalc(ObjName);
  return appendStringBuilder(`${ObjName.teamName}: ${avgScoreCalc(ObjName)} | `, '.code-output-2');
  }

// IS UNDEFINED, WHY? <<<<
const TJohn = challenge2('TJohn', 'Team John', 89, 120, 103);
//----------------------------------------------------------

console.log(TJohn); //<<<< 'undefined'

Я действительно хочу сохранить возврат функции "challenge2()" в простой переменной. Что я делаю неправильно? Отладка говорит, что она не определена.

Спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 28 апреля 2019

append возвращает undefined. Вы, вероятно, хотели сделать

function appendStringBuilder(string, tag) {
  document.querySelector(tag).append(string);
  return string;
}
1 голос
/ 28 апреля 2019

ParentNode.append ничего не возвращает, иначе undefined. Когда вы возвращаете результат этого вызова из appendStringBuilder и возвращаете его снова, чтобы затем окончательно присвоить его переменной, неудивительно, что в конце переменная имеет значение undefined.

0 голосов
/ 28 апреля 2019
It looks like the signature of challenge2 function having ObjName is not of any use as again you are creating a variable inside with same name. Also other functions you are using inside not having any definition.

Find the updated 'challenge2' function which will work for same. (still can be optimized)

// function calculates average score of team

    function avgScoreCalc(obj) {
      const values = Object.values(obj);
      let avgSum = 0;
      for (var i = 0; i < values.length; i++) {
        if (Number.isInteger(values[i])) {
          avgSum += values[i];
        }
      }
      avgSum = avgSum / 3;
      return Math.round(avgSum);
    }

    function challenge2( teamName, firstGame, secondGame, thirdGame) {

      var ObjName = {
        teamName: teamName,
        firstGame: firstGame,
        secondGame: secondGame,
        thirdGame: thirdGame,
      };

      return `${ObjName.teamName}  :  ${avgScoreCalc(ObjName)}`;

    }

    const TJohn = challenge2( 'Team John', 89, 120, 103);
    //----------------------------------------------------------

    console.log(TJohn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...