Сравнение стоимости, которая может быть НЭН в Javascript

Уверенное сравнение целой стоимости с информацией NaN в Javascript? Например, используя jQuery:

var notaValidaEliminatoria = grupoEliminatorio.notaEliminatoriaValida();
var notaEliminatoria = parseInt(componenteEliminatorio.grupoEliminatorio.val());
if(notaValidaEliminatoria > notaEliminatoria) {
    ...
}

Переменная notaEliminatoria смоги содержать NaN если стоимость componenteEliminatorio.grupoEliminatorio.val() (поле в формуляре) он пустой. Он произойдет каждый раз, когда любая целая стоимость меньшая или равна в NaN или я вынужден обнаруживать с isNaN() если он или нет числом, и если состоит в том, чтобы реализовывать это сравнение?

1
задан 04.03.2016, 23:23
2 ответа

В этой части кода:

if(notaValidaEliminatoria > notaEliminatoria) {

Если любая из двух переменных (или две) будет NaN, reasultado всегда будет false, что вероятно не ожидаемое поведение.

Сначала ты был бы должен санкционировать с isNaN() переменная, которая могла бы быть НЭН, (в этом случае, как кажется notaEliminatoria ввиду parseInt()) и уже ты реши, что делать по этому поводу.

Например:

var notaValidaEliminatoria = grupoEliminatorio.notaEliminatoriaValida();
var notaEliminatoria = parseInt(componenteEliminatorio.grupoEliminatorio.val());

if (isNaN(notaEliminatoria)) {
    throw "notaEliminatoria es inválida";
}

if(notaValidaEliminatoria > notaEliminatoria) {
    ...
}

Или вместо throw делать один return метода или чего-нибудь в этом роде, приспособленного в твоем случае.

3
ответ дан 24.11.2019, 14:46

В этом специфическом случае, если ты реализуешь parseInt():

var notaEliminatoria = parseInt(componenteEliminatorio.grupoEliminatorio.val());
    if(notaValidaEliminatoria > notaEliminatoria) {
        ...
    }

я думаю, что он не необходим, так как notaEliminatoria tendrГ - во всегда целую стоимость, если он состоит в том, что не происходит раньше ошибка в ней conversiГіn.

Я optarГ - за санкционированием componenteEliminatorio.grupoEliminatorio.val() перед тем, как реализовывать parserInt().

if (isNaN(componenteEliminatorio.grupoEliminatorio.val())) {
  notaEliminatoria = 0; //No númerico, define un valor default.
}else{
   notaEliminatoria = parseInt(componenteEliminatorio.grupoEliminatorio.val());
}
0
ответ дан 24.11.2019, 14:46
  • 1
    если componenteEliminatorio.grupoEliminatorio.val() возвращает string с любой стоимостью не номер и # 233; богатый, isNaN() возвращать и # 224; false однако в parsearlo как Int возвращать и # 225; NaN и мы находимся в той же проблеме, что раньше – Carlos Muñoz 04.03.2016, 23:50
  • 2
    у тебя есть raz и # 243; n Карлос, я предложи и # 237; в стоимость default (0) в случае, если это был NaN. – Jorgesys♦ 04.03.2016, 23:52

Теги

Похожие вопросы