Content extract
					
					Szabadkai Műszaki Szakfőiskola  Web programozás  dr Zlatko Čović chole@vts.suacrs 1     CLIENT-SERVER  2     Internet technológiák Kliens oldali: -(x)HTML -CSS -JavaScript -XML   Szerver oldali: -PHP -ASP -JSP  -Node.js  JavaScript XML PHP   AJAX 3     JavaScript A JavaScript programozási nyelv egy objektumalapú szkriptnyelv. 1995-ben a Netscape cég az internet böngészőjének egy újabb változatával jelent meg. Ez az áttérés az 11 változatról a 2.0 változatra alapvető, mondhatjuk forradalmi változást hozott a böngésző szolgáltatásaiban. Az új változat tartalmazott egy LiveScript nevű beépített nyelvet (kifejlesztője Brendan Eich), amellyel a HTML oldalak a letöltés után is manipulálhatókká váltak a kliens oldalon. Ennek a nyelvnek a szintaxisa nagyon hasonlított a Java nyelv szintaxisához, ezért piaci szempontok miatt nevét hamarosan JavaScript-re változtatták. ECMAScript  ECMA-262 ECMAScript 2019  4     JavaScript Java  JavaScript 
Objektum orientált nyelv. Létezik támogatás az objektumokra, osztályokra, öröklődésre.  Objektalapú. Léteznek beépített objektumok.  A programot le kell fordítani a végrehajtás előtt.  Értelmezett (interpretált) nyelv, böngészőben végrehajtódik.  Az appletek külön állnak az (x)HTML dokumentumtól, ahonnan meghívjuk őket.  A programok az (x)HTML dokumentumba integráltak.  A változókat deklarálni kell (erős tipizáció).  A változókat nem kell deklarálni (gyönge tipizáció).  Statikus összekapcsolás: az objektumreferenciának léteznie kell a fordítás ideje alatt.  Dinamikus összekapcsolás: az objektum-referenciát a futatás közben ellenőrzi.  5     JavaScript A JavaScript használata:  • a weboldal elemei kinézetének beállítása és módosítása • interaktivitás • dátum és idő megjelenítése különböző formátumokban • különböző számítások elvégzése • az űrlapokon keresztül bevitt adat ellenőrzése •
“sütik” létrehozása (Cookies) • a felhasználói web böngészőjének detektálása • dinamikus (x)HTML • mobil alkalmazások készítése • windows alkalmazások készítése • játekok készítése   6     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 1</title> </head> <body> <script type="text/javascript"> var city = "Subotica"; var school = "Subotica Tech"; document.write(school); </script> </body> </html>  7     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 2</title> </head> <body> <script> var city = "Subotica"; document.write(city); </script> <p>Hello WORLD!</p>
<script> var school = "Subotica Tech"; document.write(school); </script> </body> </html>  8     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 3</title> </head> <body> <script src="1.js"></script> </body> </html>  9     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 4</title> <script src="1.js"></script> </head> <body>  </body> </html>  10     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 5</title> <script
src="1.js"></script> </head> <body> <script src="2.js"></script> </body> </html>  11     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 6</title> </head> <body> <script type="text/javascript"> var city; city = "Subotica"; document.write(city); </script> <noscript> <p>Your browser doesn't support JavaScript</p> </noscript> </body> </html>  12     JavaScript A JavaScript használata az HTML oldalon: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 7</title> </head> <body> <input type="button" onclick="alert('Hello World!');" value="Click me" > </body>
</html>  13     Általános szintaktikai szabályok • Nagy- és kisbetűk  A JavaScript megkülönbözteti a nagy- és kisbetűket.  • Szóközök, tabulátorok és sorvégjelek A JavaScript figyelmen kívül hagyja a szóközöket, tabulátorokat és sorvégjeleket.  14     Általános szintaktikai szabályok • Opcionális pontosvessző  A JavaScriptben az utasításokat opcionális pontosvesszők zárják le. Ha elhagyjuk a pontosvesszőt, akkor a JavaScript megpróbálja automatikusan beszúrni azt a megfelelő helyre. a = 3; b = 4; a =3 ; b = 4;  a = 3; b = 4  - Általában minden utasítást külön sorba helyezzünk el. - Minden utasítást explicit pontosvesszővel fejezzünk be.  15     Általános szintaktikai szabályok • Megjegyzések  // megjegyzés /* több soros megjegyzés, 1. sor több soros megjegyzés, 2. sor */  16     Általános szintaktikai szabályok • Literálok  A literálok a JavaScriptben fix értékeket reprezentálnak. 14 1.4 "Subotica
Tech" 'Subotica' true false null  17     Általános szintaktikai szabályok • Azonosítók (identifikátorok)  Az azonosító egy név. A JavaScriptben az azonosítókat változók, függvények és címkék (label) elnevezésére használjuk. Szabályok: - Az azonosítóknak betűvel, aláhúzással ( ) vagy dollár ($) jellel kell kezdődniük, az ezt követő karakter azonban már szám (0 . 9) is lehet  - Az azonosító neve nem lehet ugyanaz, mint bármely foglalt szó, amelyet más célokra használnak a JavaScriptben.  18     Általános szintaktikai szabályok • Foglalt szavak break  do  if  switch  typeof  case  else  in  this  var  catch  false  instanceof  throw  void  continue  finally  new  true  while  default  for  null  try  with  delete  function  return  • Foglalt szavak az ECMA bővítések számára abstract  double  goto  native  static  boolean  enum  implements  package  super  byte  export  import  private  synchronized  char  extends  int 
protected  throws  class  final  interface  public  transient  const  float  long  short  volatile  debugger  19     Általános szintaktikai szabályok • Foglalt szavak arguments  encodeURI  Infinity  Object  String  Array  Error  isFinite  parseFloat  SyntaxError  Boolean  escape  isNan  parseInt  TypeError  Date  eval  Math  RangeError  undefined  decodeURI  EvalError  Nan  ReferenceError  unescape  decodeURIComponent  Function  Number  RegExp  URIError  20     Adattípusok és értékek • Számok • Karakterláncok (sztringek) • Logikai értékek • Függvények • Objektumok • Tömbök • Szimbólumok (ECMAScript 2015) • null • undefined  • Date típusú objektum • Math típusú objektum • Reguláris kifejezések • Objektumok, amelyek hibákat reprezentálnak  21     Speciális numerikus értékek Konstans  Jelentés  Infinity  speciális érték a végtelen jelölésére  NaN (Not-a-Number)  speciális “nem szám” érték  Number.MAX VALUE  legnagyobb
szám a JavaScriptben  Number.MIN VALUE  legkisebb szám a JavaScriptben  Number.NaN  speciális “nem szám” érték  Number.POSITIVE INFINITY  speciális érték a végtelen jelölésére  Number.NEGATIVE INFINITY  speciális érték a negatív végtelen jelölésére  var x = 1000 / "Alma"; // NaN isNaN(x); // returns true var y = 100 / "1000"; // number isNaN(y); // returns false  22     Speciális numerikus értékek isFinite()  - ellenőrzi, hogy a szám korlátos-e,  szabályszerű-e. false értéket ad vissza, ha az érték +Infinity, -Infinity vagy NaN, egyébként true a visszatérő értéke. var z1 = 3/0; var z2 = -3/0; var z3 = 0/0; document.write(z1+"<br>"); // Infinity document.write(z2+"<br>"); // -Infinity document.write(z3); // NaN  23     Számok Egész szám literálok: 0 4 10000 Hexadecimális és oktális literálok: 0xff // decimális értéke: 15*16 + 15 = 255 0377 // decimális értéke: 3*64 + 78 + 7 = 255
(0o377) Lebegőpontos literálok: 3.14 2345.789 6.02e23  24     Karakterláncok (sztringek) Sztring literálok "" // üres sztring 'Subotica' "3.14" "JavaScript is   script language" 'name="myform"' Speciális karaktereket az escape karakterrel (backslash ) együtt szerepeltethetünk egy sztring literálban. Karakter  Jelentés    Visszalépés (Backspace)  	  Tabulátor (Tab)     Új sor (New line)  v  Vertikális tabulátor (Vertical tab)  f  Lapdobás (Form feed)     Kocsi vissza (Carriage return)  ”  Idézőjel (Double quote)  ’  Aposztróf (Apostrophe vagy single quote)  \  Fordított törtvonal (Backslash karakter  )  25     Logikai értékek true  false  26     Függvények Függvény típusú literálok:  function square(x) { return x*x;} var square = function(x) { return x*x}  27     Objektumok 1. Logikai értékek lehetnek objektumok vagy primitív adatok, amelyek objektumként kezelhetők. 2. Szám értékek
lehetnek objektumok vagy primitív adatok, amelyek objektumként kezelhetők. 3. Szöveg értékek lehetnek objektumok vagy primitív adatok, amelyek objektumként kezelhetők. 4. A tömbök mindig objektumok 5. A függvények mindig objektumok Az objektum egy adat, amelynek tulajdonságai (jellemzői) és tagfüggvényei (metódusai) vannak. 28     Objektumok A kijelölt értékek gyűjteménye egy objektum. Ezeket a kijelölt értékeket általában az objektum tulajdonságainak nevezik (properties). kep.width kep.height  // width - tulajdonság // height - tulajdonság  kep["width"] kep["height"] document.myFormmyButton Objektum metódusa objektum.metódus()  document.write("Hello World!") 29     Objektumok Objektum típusú literálok  var point = {x:2.3, y:-12}; var kep= {width:150, height:250}; var student={ name: "John", lastname: "Malkovich", numberOfIndex: "122039014" }; var
student2={name:"Peter",lastname:"Brown", numberOfIndex:"122049014"};  30     Objektumok A JavaScriptben egy adott objektumnak (string, szám) az összes módszerei és tulajdonságai rendelkezésre állnak a primitív értékek számára is, mert a JavaScript átmenetileg a primitív értékek objektumaira alakítja a módszerek és a tulajdonságok végrehajtása előtt.  31     Tömbök A tömb egy objektum, amely több értéket memorizál és amelynek több tulajdonsága (properties) van. var myArray = new Array(10); myArray[0] = 16; myArray[1] = 21; myArray[6] = 78; myArray[9] = 87; var a = new Array(); // vagy var a = []; a[0] = 1.2; a[1] = "JavaScript"; a[2] = true; a[3] = {x:1, y:3};  var autok = new Array("Fiat","Opel","BMW"); 32     Tömbök Tömb típusú literálok  var a = [1.2, "JavaScript", true, {x:1, y:3}]; var autok = ["Fiat","Opel","BMW"];  33     null A null
kulcsszó különleges érték, amely arra utal, hogy nincs semmilyen konkrét érték. A null értéket általában különleges objektum értékként tartják számon – ez az az érték, amely nem jelöl semmilyen objektumot. Amikor a változó null értéket tartalmaz, az azt jelenti, hogy nem tartalmaz semmilyen használható objektumot, tömböt, számot, sztringet vagy logikai értéket. Ha a null érték logikai értékként értékelődik ki, false értékre konvertálódik. Amikor numerikus környezetben szerepel, 0 értékre konvertálódik. Ha karaktertömbként használják, "null" sztringre konvertálódik.  34     null, undefined Ha egy változóhoz vagy egy tömbelemhez még nem lett hozzárendelve valamilyen érték, akkor annak értéke undefined. undefined – nem létezik null – speciális kulcsszó, amely jelzi, hogy hiányzik az értéke  35     Változók Változók deklarálása (lokális, globális)  var myschool; Változók inicializálása var
myschool = "VTŠ Subotica"; var myschool; myschool = "VTŠ Subotica"; var home = "c:\temp"  36     Változók var name = new String("Hello World!"); var x = new Number(123); var y = new Boolean(true); Minden változó a JavaScriptben lehet objektum! Változó típusát a typeof függvényel tudjuk megszerezni. var k = typeof("123"); var x; // undefined document.write(u); // error, u is undefined u=3;  37     Változók var school = "VTS"; var city = "024";  function writeSchool() { var school = "vts2"; var city = "Subotica"; //window.city = "036"; city = "0366"; document.write(school); document.write(" "+city+"<hr>"); student = "My name"; } writeSchool(); document.write(school+" "+city); document.write("<hr>"+student); 38     Változók Blokktartomány, lokális, globális  let mySchool = "VTŠ Subotica";
let myCity; myCity = "Subotica"; document.write(mySchool+"<br>"); document.write(myCity);  39     Változók var s = true; let z = 1;  if (s) { var x = 5; } console.log(x); // x is 5 console.log(windowx); if (s) { let y = 5; } console.log(y); //ReferenceError: y is not defined  console.log(windowz); // undefined 40     Változók var a; console.log('The value of a is ' + a); console.log('The value of b is ' + b); var b; console.log('The value of c is ' + c); // Uncaught ReferenceError: c is not defined let x; console.log('The value of x is ' + x); console.log('The value of y is ' + y); // Uncaught ReferenceError: y is not defined let y;  41     Szigorú mód  "use strict"; pi = 3.14; document.write(pi);  var pi; pi2 = 3.14; document.write(pi2); let pi2;  42     Konstansok const MY SCHOOL = 'Subotica Tech';  43     Aritmetikai operátorok Operátor  Leírás  Példa  +  összeadás  x=y+2  - 
kivonás  x=y-2  *  szorzás  x=y*2  /  osztás  x=y/2  %  maradékos osztás (moduló képzés)  x=y%2  ++  változó értékének növelése eggyel (inkrementálás)  x=y++ x=++y  --  változó értékének csökkentése eggyel (dekrementálás)  x=y-x=--y  44     Aritmetikai operátorok A + műveletjel szolgálhat sztring típusú változók vagy szöveges értékek összefűzésére is. txt1="My school"; txt2=" is Subotica Tech"; txt3=txt1+txt2; // “My school is Subotica Tech” txt4="2"+"2"; // "22“ txt5=2+2+"2"; // "42" txt6="2"+2+2; // "222" A- műveletjel szolgálhat az előjel megadására is negatív értékeknél. myNumber = -15;  45     Logikai operátorok x=5 és y=6 Operátor  Leírás  Példa  &&  Logikai és művelet  (x<10 && y>5) igaz (x<10 && y<6) hamis  ||  Logikai vagy művelet  (x<10 || y==7) igaz (x>10 || y>7) hamis  !  Negáció 
!(x==y) igaz !(x<y) hamis  Feltételes operátor (feltételes hármas) változó=(feltétel)?érték1:érték2 var a = 5; var b = 6; var uzenet = (a<b)?"nagyobb":"kisebb"; document.write(uzenet);  46     Bitszintű operátorok Operátor  Leírás  &  Bitszintű és  |  Bitszintű vagy  ^  Bitszintű kizáró vagy  ~  Bitszintű negálás  <<  Bitszintű balra eltolás  >>  Bitszintű jobbra eltolás  >>>  Előjel nélküli jobbra eltolás  47     Értékadó operátorok Ezzel egyenértékű  Operátor  Példa  =  x=y  +=  x+=y  x=x+y  -=  x-=y  x=x-y  *=  x*=y  x=x*y  /=  x/=y  x=x/y  %=  x%=y  x=x%y  48     Relációs (összehasonlító) operátorok: x=6 Operátor  Leírás  Példa  ==  érték egyenlő  x==8 x==6  ===  érték és típus egyenlő  x===“6” hamis x===6 igaz  !=  érték nem egyenlő  x!=8 igaz  !==  érték és típus nem egyenlő  x!==“6” igaz x!==6 hamis  >  nagyobb  x>8 hamis  <  kisebb  x<8 igaz
 >=  nagyobb vagy egyenlő  x>=8 igaz  <=  kisebb vagy egyenlő  x<=8 igaz  hamis igaz  49     Számok átalakítása szöveggé var n = 50; var s = n+" hallgató letette a vizsgát."; // "50 hallgató letette a vizsgát." var n s = n+""; // "50" var str value1 = String(n); // függvény var str value2 = n.toString(); // metódus (a primitív szám típus Number típusú objektummá konvertálódik, hogy ezt a metódust meg lehessen hívni) var k = typeof(str value2); document.write(str value2+" tipusa "+k+"<br>"); document.write(str value2+" tipusa "+typeof(str value2)+"<br>"); 50     Számok átalakítása szöveggé var n = 255; var binary string = n.toString(2); var octal string = "0"+n.toString(8); var hex string = "0x"+n.toString(16); document.write(binary string+"<br>"); document.write(octal string+"<br>"); document.write(hex
string); 11111111 0377 0xff  51     Számok átalakítása szöveggé var n = 123456.789; document.write(ntoFixed(0)+"<br>"); document.write(ntoFixed(2)+"<br>"); document.write(ntoExponential(1)+"<br>"); document.write(ntoExponential(3)+"<br>"); document.write(ntoPrecision(4)+"<br>"); document.write(ntoPrecision(7)+"<br>");  123457 123456.79 1.2e+5 1.235e+5 1.235e+5 123456.8  52     Sztring átalakítása számmá var string value1 = "55"; var string value2 = "55.56545 euros"; var num1 = "21"*"2"; var num2 = 2*"2"; var num3 = parseInt(string value1); var num4 = parseFloat(string value2); var number = string value1-0; document.write(num1+" "+typeof(num1)+"<br>"); document.write(num2+" "+typeof(num2)+"<br>"); document.write(num3+" "+typeof(num3)+"<br>");
document.write(num4+" "+typeof(num4)+"<br>"); document.write(number+" "+typeof(number)); 42 number 4 number 55 number 55.56545 number 55 number  53     Sztring átalakítása számmá var v1 = "ff"; var v2 = "0xff"; var v3 = "11"; document.write(v1+" "+Number(v1)+"<br>"); document.write(v2+" "+Number(v2)+"<br>"); document.write(v3+" "+Number(v3)+"<hr>"); document.write(v1+" "+parseInt(v1,16)+"<br>"); document.write(v2+" "+parseInt(v2,16)+"<br>"); document.write(v3+" "+parseInt(v3,2)+"<hr>");  ff NaN 0xff 255 11 11 ff 255 0xff 255 11 3 ff NaN 0xff 0 11 11  document.write(v1+" "+parseFloat(v1)+"<br>"); document.write(v2+" "+parseFloat(v2)+"<br>"); document.write(v3+" "+parseFloat(v3)+"<hr>"); 
54     Logikai értékek átalakítása var v1 = "1"; var v2 = 1; var v3 = 100/0; var v4 = 0; var v5 = "0"; var v6 = "10 cars"; var v7 = 10/"Apples"; var v8 = ""; document.write(v1+" "+Boolean(v1)+"<br>"); document.write(v2+" "+Boolean(v2)+"<br>"); document.write(v3+" "+Boolean(v3)+"<br>"); document.write(v4+" "+Boolean(v4)+"<br>"); document.write(v5+" "+Boolean(v5)+"<br>"); document.write(v6+" "+Boolean(v6)+"<br>"); document.write(v7+" "+Boolean(v7)+"<br>"); document.write(v8+" "+Boolean(v8)+"<br>");  1 true 1 true Infinity true 0 false 0 true 10 cars true NaN false false 55     Feltételes utasítások if (feltétel)   if (feltétel)  else   56     Feltételes utasítások if (feltétel1) . else if (feltétel2) . else if
(feltétel3) . else   57     Feltételes utasítások var ev=2013; if(ev%2==0) document.write("páros év"); if(ev>2014) { document.write("nagyobb év"); } else if (ev==2014) { document.write("2014"); } else if (ev%2!=0) { document.write("páratlan év"); } else { document.write("ismeretlen év"); }  58     Switch-case elágazás switch (tesztkifejezés) { case érték1: [utasítás 1] //ez az utasítás végrehajtódik, ha a tesztkifejezés értéke érték1. break; case érték2: [utasítás 2] //ez az utasítás végrehajtódik, ha a tesztkifejezés értéke érték2. break; . default: [utasítás n] //ez az utasítás végrehajtódik, ha a tesztkifejezés értéke egyik felsorolt értékkel sem egyezett meg. break; } 59