Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с задачей (нан не нан) (https://javascript.ru/forum/misc/43175-problema-s-zadachejj-nan-ne-nan.html)

maksimov.ua 25.11.2013 13:55

Проблема с задачей (нан не нан)
 
Вложений: 2
Добрый день уважаемые форумчане, растолкуйте мне почему Нан не Нан и условие не выполняется!

рони 25.11.2013 14:17

maksimov.ua,
Цитата:

Чтобы проверить переменную на NaN, используйте специальную функцию isNaN
prompt возвращает строки а не числа

maksimov.ua 25.11.2013 14:38

isNaN --сработало..
возвраты prompt'а преобразовал вот так :
var result = + product1 + + product2;
проверился Иснаном:
if ( isNaN(result)){
alert("Введены не числа");
и посчитался при false :
else {
result = result.toFixed(10);
result = Math.abs(result);
alert(result + " грн");

Но вопрос закрыт не полностью: Почему отладчик хрома в вотче показал result без кавычек, если это строка?

рони 25.11.2013 14:49

Цитата:

Сообщение от maksimov.ua
Почему отладчик хрома в вотче показал result без кавычек, если это строка?

где пример в котором result строка????

maksimov.ua 25.11.2013 14:52

стоп!!! Понимаю, что буду закидан камнями, но НаН строка?

рони 25.11.2013 14:54

maksimov.ua,
alert(typeof NaN)

ksa 25.11.2013 14:56

Цитата:

Сообщение от maksimov.ua
но НаН строка?

Из букваря
Цитата:

Значение NaN не равно никакому другому числу, включая само NaN.

Чтобы проверить переменную на NaN, используйте специальную функцию isNaN.
http://javascript.ru/NaN

Вывод - не строка.

maksimov.ua 25.11.2013 15:04

Вложений: 1
Собственно код:

var product1 = prompt("Введите цену первого товара: ","");
var product2 = prompt("Введите цену второго товара","");
var result = + product1 + + product2;
alert(typeof NaN);
alert(typeof result);
if (result == NaN){
//if ( isNaN(result)){
alert("Введены не числа");

} else {
result = result.toFixed(10);
result = Math.abs(result);
alert(result + " грн");
}

Дальше после проверки переходим сразу на else, так как проверка возвращает false. Но отладчик показывает, что сравниваю число с НаН, который в свою очередь является тоже число.
watch из crome

product1: "1"
product2: "q"
result: NaN
result == NaN: false
typeof NaN: "number"
typeof result: "number"

maksimov.ua 25.11.2013 15:05

Цитата:

Сообщение от ksa (Сообщение 282665)
Из букваря

http://javascript.ru/NaN

Вывод - не строка.

Спасибо. Пошел в "букварь!"


Часовой пояс GMT +3, время: 10:10.