Простая функция JavaScript не работает, как ожидалось.Зачем? - PullRequest
0 голосов
/ 16 мая 2018

По какой-то причине, независимо от того, что я связываю с переменной theNumber, я все равно получаю консоль, выводящую первый console.log () внутри numberCheck (). Я ожидал, что это выведет второй console.log (), но он отказывается. Я перепробовал много разных синтаксических изменений. Может быть, я просто не понимаю выражение! Number.isNaN (). Я думал, что это означает, что число - это число, а не его истинное значение, но я могу ошибаться.

Имейте в виду, я новичок. Я понимаю терминологию, поэтому не стесняйтесь общаться с любыми словами. Но моя логика javascript ниже.

let theNumber = 'god'
function numberCheck(x) {
    if (!Number.isNaN(x)) {
        console.log('You picked a number')
    }
    else {
        console.log('why won't this log');
    }
}

numberCheck(theNumber)
numberCheck(12)

Выход:

You picked a number
You picked a number

ИСПРАВЛЕНО и работает как положено:

let theNumber = 'god'
function numberCheck(x) {
    if (isNaN(x)) {
        console.log('You picked a number')
    }
    else {
        console.log('why wont this log');
    }
}

numberCheck(theNumber)
numberCheck(12)

Выход:

why wont this log
You picked a number

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

В JS NaN это значение, которое отличается от типа к другому, в основном NaN для строк, NaN для целых и т. Д., Что этот метод делает, проверяет, является ли переданное значение NaN типа Number.

0 голосов
/ 16 мая 2018

Использование функции "isNaN" иногда может быть непросто (см. Эту часть документации "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN"). Так как кажется, что вы просто хотите проверить, является ли переменная числом или нет, вы можете сделать это следующим образом:

var theNumber = 100;   
function numberCheck(x){   
  if(typeof x === 'number'){   
    console.log('Nice you picked a number');   
  }else{   
    console.log('It is not a number');   
  }   
}   
numberCheck(theNumber);    

Функция «typeof» вернет тип переменной «x».

0 голосов
/ 16 мая 2018

Вы должны привести аргумент x к числу

let theNumber = 'god'
function numberCheck(x) {
    if (!Number.isNaN(Number(x))) {
        console.log('You picked a number');
    } else {
        console.log('why won\'t this log');
    }
}

numberCheck(theNumber);
numberCheck(12);
...