Návody a pomôcky pri programovaní v HTML, CSS, Flash (ActionScript) a Visual Basic

NaN a funkcia isNaN pri programovaní v ActionScripte

V poslednej dobe mnohí ľudia na internete vyhľadávajú, čo vo Flash znamená NaN. Rozhodol som sa preto napísať krátky opis.

Pri programovaní aplikácií pomocou ActionScriptu (2 aj 3) sa nám môže stať, najmä ak načítavame údaje od uživateľa alebo z externých súborov, že výsledok matematických operácií nám vráti hodnotu NaN.

Skratka NaN znamená “Not a Number”, čiže “nie je číslo”.

Ak by sme mali vytvorené tri premenné:

var cislo1 = 10;
var cislo2 = "3.15"
var cislo3 = "osem";

Môžeme vidieť, že nezmyselný výpočet (3 * osem) nám vráti hodnotu NaN – vo výpočte je slovo namiesto čísla 8

trace(3 * cislo3); //vypise NaN

Samozrejme ak počítame normálne hodnoty, tak vrátena hodnota je výsledok výpočtu:

trace(cislo1 * cislo2); //31.5

Vidíme, že ak je číslo v úvodzovkách, nerobí to žiaden problém…

Výborné je, že nemusíme čakať či nám Flash vyhodí chybové hlásenie, ale pomocou funkcie isNaN() môžeme v ActionScripte overiť, či hodnota je alebo nieje číslo.

Ak overovaná hodnota je číslo, vráti funkcia isNaN() hodnotu false
Ak overovaná hodnota nie je číslo, vráti funkcia isNaN() hodnotu true

trace (isNaN(cislo1)); //vracia false
trace (isNaN(cislo2)); //vracia false
trace (isNaN(cislo3)); //vracia true, pretoze je pravda ze toto nieje cislo

Túto funkciu môžeme teda použiť v podmienkach a ak hodnota načítaná napríklad od uživateľa nieje číslo, môžeme ho na to nejakým spôsobom upozorniť:

if (isNaN(cislo3))
{
trace("Hodnota cislo3 (" + cislo3 + ") nieje cislo...");
}

A naopak, ak chceme aby sa podmienka vykonala iba ak je hodnota číselná, tak to zapíšeme takto:

if (!isNaN(cislo2))
{

trace("Hodnota v cislo2 (" + cislo2 + ") je cislo...");
}

Pridaj komentár

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmeniť )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmeniť )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmeniť )

Connecting to %s

Follow

Get every new post delivered to your Inbox.