Я пытаюсь создать программу, которая сравнивает два разных значения (x, y) и определяет, будет ли первое больше, равно или меньше другого. В дополнение к этому он также обнаружит, введено ли значение NaN и выдается инструкция об ошибке. Код ниже ....Ошибка JavaScript Output и Control Flow при сравнении двух значений
function getRelationship(x, y) {
if (x > y) {
return ">";
}
else if (x < y) {
return "<";
}
else if (x == y) {
return "=";
}
else if (isNaN(x)) {
console.log("Can\'t compare relationships because " + x + " is not a number");
return x;
}
else if (isNaN(y)) {
console.log("Can\'t compare relationships because " + y + " is not a number");
return y;
}
else if (isNaN(x) && isNaN(y)) {
console.log("Can\'t compare relationships because " + x + " and " + y + " are not numbers");
return x, y;
}
}
Когда я введите следующие вызовы функций:
console.log(getRelationship(1,4));
console.log(getRelationship(1,1));
console.log(getRelationship("that",2));
console.log(getRelationship("this"," something else"));
console.log(getRelationship(3));
console.log(getRelationship("hi"));
console.log(getRelationship(NaN));
console.log(getRelationship(NaN, undefined));
Я получаю обратно:
LOG: '<'
LOG: '='
LOG: 'Can't compare relationships because that is not a number'
LOG: 'that'
LOG: '>'
LOG: 'Can't compare relationships because undefined is not a number'
LOG: undefined
LOG: 'Can't compare relationships because hi is not a number'
LOG: 'hi'
LOG: 'Can't compare relationships because NaN is not a number'
LOG: NaN
LOG: 'Can't compare relationships because NaN is not a number'
LOG: NaN
Так что мои вопросы, как приходят на четвертый вызов функции в инструкции Else If
с оператором &&
не используется; как происходит сравнение «этого» и «чего-то другого», и как я могу изменить это, чтобы использовать условное условие &&
; и почему я получаю NaN
, а некоторые другие строки, выведенные, когда все, что я хочу, являются предварительно закодированными выходами console.log()
?
Благодарим за отзыв. Теперь для первого вопроса мне нужно это сделать, если перед (isNaN (x))? Что касается последнего вопроса, то причиной, по которой я вернул их, было избежать получения «неопределенного» в качестве вывода. Любое предложение о том, как избежать как выходного журнала, так и вывода «undefined»? – JCD
Не совсем, я бы рекомендовал просто игнорировать 'undefined'. Вы могли бы, конечно, «вернуть» свое «выходное сообщение», но для правильной обработки ошибок вам лучше «бросить» их. – Bergi