Вопрос

Документация 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 ()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top