Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe 1. část BI-JSC Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti P. Štěpán PHP BI-PHP, výpis 1 1/5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>syntaxe jazyka JavaScript - datove typy</h1> <-- vkladani JavaScriptu do HTML stranky --> <noscript>vas prohlizec nepodporuje JavaScript,<br> nebo je JavaScript zakazan!</noscript> <!-- kod JavaScriptu v externim souboru --> <!-- <script type="text/javascript" src="lib.js"></script> --> <script type="text/javascript"> // <![CDATA[ // CDATA kvuli XHTML // alert("ahoj!"); // alert zobrazi parametr v samostatnem okne // prikazy konci strednikem NEBO KONCEM RADKU (nedoporucuje se)!! // komentar do konce radku komentar od - do var i,j=5,k; // definice + inicializace promennych // alert(j); // automaticky konvertuje na "5" // alert(i); // undefined x = 3; // take nadefinuje (a naplni) promennou // POZOR - definice s var je lokalni v oboru platnosti!! // Bez var je GLOBALNI!! // case sensitive Prvni = 0; prvni = 1; // jina promenna identifikatory (promenne, funkce,...) 1. znak je pismeno (Unicode), "podtrzitko" _ nebo dolar ostatni znaky pismena, cislice,... identifikator NESMI byt klicove slovo (var, for,...) doporucuji se camel identifikatory: mujkrasnyidentikator // bloky (NEEXISTUJI LOKALNI promenne v bloku!!) if (i == 1){ j = 4; k = 5; } P. Štěpán PHP BI-PHP, výpis 1 2/5
// Datove typy: Undefined, Null, Boolean, Number, String, Object // nelze definovat vlastni typy (krome poli a objektu) // primitivni a referencni typy // operator typeof (vraci string - napr. slovo undefined) var z; // alert(typeof z); // undefined z = 1; // alert(typeof z); // number z = "Ahoj!"; // alert(typeof z); // string // undefined - neinicializovana promenna, popr. promenna, // do ktere se undefined priradilo (nedoporucuje se) var t; // alert(t == undefined); // true (undefined lze testovat) // NEDEFINOVANA promenna pri pouziti vyvola chybu: // alert(neni); // ale typeof pro nedefinovanou promennou vraci undefined!! // alert(typeof neni); // proto je vhodne promenne inicializovat // null - prazdny pointer na objekt (vhodna inicializace pro objekty) // alert(typeof null); // object var clovek = null; //... if (clovek!= null) { proved neco s clovekem } // alert(null == undefined); // true // Boolean - literaly true a false var zaplaceno = true; jine typy konvertuji (v pripade potreby) na true a false: true: neprazdny retezec, nenulove cislo (i nekonecno), kazdy objekt false: prazdny retezec, nula, NaN, null, undefined P. Štěpán PHP BI-PHP, výpis 1 3/5
// Number - reprezentovan desetinnym cislem ("double") // vnitrne pouziva i cela ("int") var num = 12; // 12 num = 017; // 15 - zacina nulou - oktalove cislo num = 018; // 18 - interpretuje dekadicky - 8 neni Italova // cislice!! num = 0x1A; // 26 - hexa // desetinna var dec = 1.2; dec = 1.234e3; // e3 = deset na treti dec = 1.0; // interpretuje jako cele dec = 1.; // 1 = take cele (ne prilis doporucenihodny // zapis) dec =.1; // 0.1 dec = 0.1 + 0.2; // pozor pri praci s desetinnymi cisly: // alert(dec); // 0.30000000000000004 // alert(number.max_value); dec = Number.MAX_VALUE + Number.MAX_VALUE; // alert(dec); // infinity (preteceni) // alert(isfinite(dec)); // false // NaN - not a number - napr. 0/0; Operace s NaN vrati vzdy NaN // alert(0/0); // NaN // alert(nan == NaN); // vrati false - NaN neni rovno NICEMU // - ani samo sobe!! // alert(isnan(0/0)); // true // alert(isnan("abcd")); // true - pokus o prevod na cislo. // Nejde-li, vrati NaN konverze na cisla - funkce Number: Boolean: true -> 1, false -> 0 Number: cislo -> cislo null -> 0!! undefined -> NaN String: "" -> 0 cislice (ve stringu) -> cele cislo ("123" -> 123; "012" -> 12 - nebere oktalove) desetinne -> cislo ("123.45" -> 123.45) hexa -> cislo ("0x12" -> 18) ostatni - NaN // alert(number(true)); // 1 P. Štěpán PHP BI-PHP, výpis 1 4/5
konverze na cela cisla - funkce parseint: whitespaces na zacatku ignoruje neni-li 1. znak cislice (nebo znamenko) vrati NaN je-li (pripadne po znamenku) 1. cislice 0, bere oktalove; po 0x - hexa konverze pokracuje az do konce, nebo do 1. necislelneho znaku // alert(parseint(" -123.45")); // -123 konverze desetinnych cisel - fukce parsefloat: whitespaces na zacatku ignoruje vedouci nuly ignoruje konci 1. znakem, ktery k cislu nepatri "hexa" cisla - vzdy vraci 0 (0x12) // alert(parsefloat(" -012.345e2")); // -1234.5 // String ohranicen bud uvozovkami " nebo apostrofy ' (totez - na rozdil od PHP) standardni escape sekvence \t \r \n \\ \' \" \x41 ("A") \u0041 ("A" v Unicode) // delka retezce: // alert("abcd".length); // 4 (vlastnost.length) stringy jsou NEPROMENNE - pri operacich (napr. spojovani) se vzdy vytvori novy string a stary se zrusi!! konverze na string - metoda tostring (tolocalstring) tostring NENI u null a undefined u cisel MUZE mit parametr (zaklad ciselne soustavy) // alert(undefined.tostring()); num = 10; // alert(num.tostring()); // "10" // alert(num.tostring(2)); // "1010" // konverze String() pracuje i na null a undefined. // Pro ostatni vola tostring alert(string(undefined)); // "undefined" // --- Object - viz dale --- // (nasledujici radek - konec CDATA sekce) // ]]> </script> </body> </html> P. Štěpán PHP BI-PHP, výpis 1 5/5