Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проверка переменной на пустоту (http://www.flasher.ru/forum/showthread.php?t=194205)

pivnoibaron 09.02.2013 20:24

Проверка переменной на пустоту
 
Вот вопрос. Создаю переменную
Код AS3:

var a:Number;

в трейсе выводит что переменная a = NaN Но когда делаю условие
Код AS3:

if ( a == NaN ) { сделать что нибудь }

условие не срабатывает, почему?

KumoKairo 09.02.2013 20:27

во многих языках нельзя напрямую проверять на NaN через оператор "равно" (я на самом деле не знаю, можно ли вообще где-то), в документации написано кстати довольно подробно об этом.
Вместо этого используется метод isNaN:
Код AS3:

if (isNaN(a)) { сделать что нибудь }


nuToH 11.02.2013 09:53

еще можно вот так:
Код AS3:

if ( a != a ) { trace( "NaN" ); }


caseyryan 11.02.2013 10:27

Цитата:

Сообщение от nuToH (Сообщение 1120162)
еще можно вот так:
Код AS3:

if ( a != a ) { trace( "NaN" ); }


мм.. что это? Как это работает?

Hauts 11.02.2013 10:44

caseyryan, особенность (точнее даже свойство) Not-A-Number`а :)

Dip52 11.02.2013 11:04

Цитата:

Сообщение от nuToH (Сообщение 1120162)
еще можно вот так:
Код AS3:

if ( a != a ) { trace( "NaN" ); }


Код AS3:

var n:Number;
if(!n)
{
        trace("Таки пуста!");
}

Тогда так.

stasuss 11.02.2013 11:18

NaN не равен никакому числу, в том числе и себе. Так что все правильно.

caseyryan 11.02.2013 12:15

Цитата:

caseyryan, особенность (точнее даже свойство) Not-A-Number`а
прикольно ) не знал о таком способе

incoob 11.02.2013 12:17

Цитата:

Сообщение от Dip52 (Сообщение 1120170)
Код AS3:

var n:Number;
if(!n)
{
        trace("Таки пуста!");
}

Тогда так.

Нельзя так. Если n==0, то ваша "проверка на пустоту" ошибочно сработает.

gloomyBrain 11.02.2013 14:36

"Пустоты" вообще нет. Есть значение по-умолчанию, которое равно NaN для типа Number, 0 для int и uint, null для String и всего остального.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.