Сравнивая паринт на NAN в ActionScript 3
-
08-10-2019 - |
Вопрос
Документация AS3 утверждает, что если вы проходите в строке к parseInt
это не число, которое он вернется NaN
. Отказ Однако, когда я пытаюсь сравнить с NaN
Компилятор дает мне следующую ошибку:
Warning: 1098: Illogical comparison with NaN. This statement always evaluates to false.
Заявление на самом деле верно. Сравнение с Нэном всегда вернется false
. Отказ Как я могу сравнить с NAN, чтобы обнаружить, было ли то, что было расставлено, было нан?
if( parseInt("test") == NaN )
{
// do something (never gets here)
}
Решение
Сравнить с isNaN()
функция.
Другие советы
Использовать Isnan () Глобальная функция
if(isNaN(parseInt("test")))
{
// do something
}
Все правильно, используйте isNaN()
Функция:
http://www.adobe.com/livedocs/flash/9.0/4.04.html#isnan()
Мне никогда не понравилось этот метод. Я предпочитаю проверять на позитив.
Интересно, хотя, если число NAN, то это будет нет приравнивать к себе:
var parsed_int:Number = parseInt("test");
if(parsed_int != parsed_int)
trace("NaN");
Там, что тестирование, если число приравнивается к себе, должно дать вам положительный
var parsed_int:Number = parseInt("123");
if(parsed_int == parsed_int)
trace("Number");
Не очень ясно, что ваши намерения при прочтении кода, поэтому обязательно прокомментируйте его, если вы его используете.
Или вы можете добавить функцию верхнего уровня:
function isNumber(num:Number):Boolean{
return num == num;
}
И записка для оптимизации гайки там. Встроенная версия самая быстрая.
Только для справки: http://www.adobe.com/livedocs/flash/9.0/401Scriptlangrefv3/package.html#parsseint ()