Почему на выходе отображается undefined и как я могу от этого избавиться?

#javascript

#javascript

Вопрос:

У меня есть 3 функции:

  1. reverseCharacter —> обращение символов
  2. CheckType —> проверка типа String или Number и изменение его
  3. newFunction —> выполняется через массивы (arrayTest1, arrayTest2 и arrayTest3), изменяя и проверяя тип символов
 function reverseCharacters(stringToReverse){
  return stringToReverse.split('').reverse().join('');
}

function checkType(stringToCheck){
  if(typeof (stringToCheck) === 'string'){
    console.log(reverseCharacters(stringToCheck));
  }
  else if(typeof (stringToCheck) === 'number'){
    console.log(reverseCharacters(String(stringToCheck)));
  }
}

let arrayTest1 = ['apple', 'potato', 'Capitalized Words'].reverse();
let arrayTest2 = [123, 8897, 42, 1168, 8675309].reverse();
let arrayTest3 = ['hello', 'world', 123, 'orange'].reverse();

function newFunction(x){
  for(let i = 0; i <= x.length; i  ){
    console.log(checkType(x[i]));
  }
}

newFunction(arrayTest3);
newFunction(arrayTest2);
newFunction(arrayTest1);
  

Когда я запускаю код, я получаю undefined после каждого значения:

 egnaro
undefined
321
undefined
dlrow
undefined
olleh
undefined
undefined
9035768
undefined
8611
undefined
24
undefined
7988
undefined
321
undefined
undefined
sdroW dezilatipaC
undefined
otatop
undefined
elppa
undefined
undefined
  

Мой вопрос в том, почему на выходе написано undefined и как я могу от этого избавиться?

Ответ №1:

Ваша функция не имеет явного оператора return, поэтому ее возвращаемое значение не определено. Вы можете доказать это, добавив return «see — no more undefined»; в качестве последней строки checkType() функции.

Или просто удалите console.log() часть вызова checkType()

 function reverseCharacters(stringToReverse){
  return stringToReverse.split('').reverse().join('');
}

function checkType(stringToCheck){
  if(typeof (stringToCheck) === 'string'){
    console.log(reverseCharacters(stringToCheck));
  }
  else if(typeof (stringToCheck) === 'number'){
    console.log(reverseCharacters(String(stringToCheck)));
  }
  return 'See, no more undefined';

}

let arrayTest1 = ['apple', 'potato', 'Capitalized Words'].reverse();
let arrayTest2 = [123, 8897, 42, 1168, 8675309].reverse();
let arrayTest3 = ['hello', 'world', 123, 'orange'].reverse();

function newFunction(x){
  for(let i = 0; i <= x.length; i  ){
    console.log(checkType(x[i]));
  }
}

newFunction(arrayTest3);
newFunction(arrayTest2);
newFunction(arrayTest1);  

Ответ №2:

Просто перепишите свой newFunction() , как это

 function newFunction(x){
  for(let i = 0; i <= x.length; i  ){
    //console.log(checkType(x[i]));
    checkType(x[i])
  }
}  

Ошибка возникает из-за того, что вы пытались получить console.log() значение из checkType() . Поскольку checkType() у него нет возвращаемого значения, он просто регистрирует reverseCharacters() возвращаемые значения, вы печатаете undefined.