Цитата:
Сообщение от AzagThoth
Чем не устраивает isNaN
Зачем городить сравнения вообще.
|
вот вы везде везде где у вас переменная Number прежде чем её использовать вы проверяете её isNaN и ещё наверное проверяет её тип typeof и чтобы быть 100% увереным ещё и instanceof Number и чтобы добить до конца parseInt, да?
бывает случаи когда переменная не инициализирована или другого типа и получается так, что это приводит к очень печальным последствиям.
например при восходящем или нисходящем приведении типа когда ссылка на мувиклип или объект превращается в undefiened или null. а если вы ещё и работаете с динамическими данными и трудно поймать такое условие - вам будет стоить громадных усилий и времени поймать в чем проблема.
например:

Код AS1/AS2:
class A
{
public var testVar:Number = 10;
}
var mc:MovieClip = attachMovie("AfromLibrary", "instanceOfA", 0); // или createEmptyMovieClip("instanceOfA", 0) - кому как нравится
mc.__proto__ = A.prototype;
var instA:A = A(mc);
var resultValue:Number = instA.testVar + 10;
if (resultValue:Number >= 0 )
{
trace("all ok");
}
else
{
unloadMovie(_level0);
}
а всего то ошибка
class A extends MovieClip.
в результате cтроки:

Код AS1/AS2:
var instA:A = A(mc); //instA = null
var resultValue:Number = instA.testVar + 10; // resultValue = NaN
if (resultValue >= 0 ) // читайте выше, что даёт NaN >= 0
з.ю. ради бога, не придирайтесь к примеру. выдумал по быстрому