#javascript
#javascript
Вопрос:
У меня есть 3 функции:
- reverseCharacter —> обращение символов
- CheckType —> проверка типа String или Number и изменение его
- 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.