我有3个功能:
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);
运行代码时,在每个值之后我都无法定义:
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
我的问题是为什么它在输出中显示未定义,我该如何摆脱它?
答案 0 :(得分:3)
您的函数没有显式的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);
答案 1 :(得分:1)
只需这样重写您的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()
返回值,因此您将获得未定义的打印结果。