Horváth Győző
Egyetemi adjunktus
1117 Budapest, Pázmány Péter sétány 1/c., 2.408-as szoba
Tel: (1) 372-2500/8469
horvath.gyozo@inf.elte.hu
webprogramozas.inf.elte.hu
Statikus vs dinamikus
JavaScript születése, a böngészők háborúja
Szerkesztők, böngészők, eszköztárak, dokumentáció
console.log()
)<script>
tag, bárhova rakhatjuk<script>
tag src attribútumával töltjük be<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Webfejlesztés 2.</title>
<script type="text/javascript">
//JavaScript kód helye
</script>
<script type="text/javascript" src="jskod.js"></script>
</head>
<body>
<script type="text/javascript">
//JavaScript kód helye
</script>
<p>Hello világ!</p>
<script type="text/javascript" src="jskod2.js"></script>
</body>
</html>
C++ → JavaScript
a = 'alma';
a = 12;
a == '12'; //true
<script>
blokk futása megáll<script>
blokk után folytatódik az oldal betöltése.<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p>Paragrafus 1.</p>
<script type="text/javascript">
console.log('1');
</script>
<p>Paragrafus 2.</p>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p>Paragrafus 1.</p>
<script type="text/javascript">
console.log('1. szkript blokk eleje');
alma.szin = 'piros';
console.log('1. szkript blokk vége');
</script>
<p>Paragrafus 2.</p>
<script type="text/javascript">
console.log('2. szkript blokk');
</script>
<p>Paragrafus 3.</p>
</body>
</html>
null
undefined
Adott típus megjelenési formája
// Logikai literál
true
false
// Szám literál
12
12.34
// Szöveg literál
'Szöveg'
"Szöveg"
'Idézőjelben "így" macsakörmölök'
"Macskakörömben 'így' idézek"
'Idézőjelben \' idézőjel'
"Macskakörömben \" macskaköröm"
'Escape: \t \n \\ '
`Tetszőleges ${kifejezés}`
var
, let
, const
kulcsszóval deklarálunk új változót'use strict;'
– strict modelet nev = 'Győző';
let masik; //undefined
+
, -
, *
, /
, %
, ++
, --
, unáris -
, unáris +
=
, *=
, /=
, %=
, +=
, -=
, stb.==
, !=
, ===
, !==
, >
, >=
, <
, <=
==
és !=
érték szerint vizsgál (automatikus konverziók)===
és !==
érték és típus szerint12 == '12' // true
12 === '12' // false
&&
, ||
, !
+
, +=
&
, |
, ^
, ~
, <<
, >>
, >>>
? :
feltételes operátor,
több kifejezés végrehajtása egy utasításban, visszatérési értéke az utolsó kifejezés// Elágazások
if (felt) {
utasítások
}
if (felt) {
utasítások
} else {
utasítások
}
// Többirányú elágazás
switch(kifejezés) {
case érték1:
utasítások
break;
case érték2:
utasítások
break;
default:
utasítások
}
// Ciklusok
while (felt) {
utasítások
}
do {
utasítások
} while (felt);
for (let i = 1; i <= n; i++) {
utasítások
}
Literálforma: []
//Létrehozás és hivatkozás
const uresTomb = [];
const tomb = [12, 'alma', true];
tomb[0]; // => 12;
tomb[1]; // => 'alma';
tomb[2]; // => true;
tomb.length // => 3
//Módosítás
tomb[0] = 13;
tomb[0]; // => 13
//Bővítés
tomb[tomb.length] = 'uj';
tomb[100] = 'messze';
tomb.length; // => 101
tomb[99]; // => undefined
//Törlés (méret nem változik)
delete tomb[1];
tomb[1]; // => undefined
tomb.length; // => 101
//Mátrix
const m = [[1, 2, 3], [4, 5, 6]];
m[1][2]; // => 6
const gyumolcsok = [
'alma',
'korte',
'szilva'
];
//A gyümölcsök kiírása a konzolra
for (let i = 0; i < gyumolcsok.length; i++) {
console.log(gyumolcsok[i]);
}
// for..of ciklus (ES6)
for (const gyumolcs of gyumolcsok) {
console.log(gyumolcs);
}
{ }
//Létrehozás
const uresObj = {};
const obj = {
mezo1: 12,
'mezo2': 'alma'
};
//Hivatkozás
obj.mezo1; // => 12
obj['mezo1']; // => 12
//Módosítás
obj.mezo2 = 'korte';
//Bővítés
obj.mezo3 = true;
//Törlés
delete obj.mezo1;
obj.mezo1; // => undefined
//Metódus
obj.metodus = function () {
console.log('Meghívtak');
}
obj.metodus(); // => Meghívtak
//Tömb az objektumban
const zsofi = {
kor: 7,
kedvencEtelek: [
'krumplipüré',
'rántott hús',
'tejberizs'
]
};
//Elem elérése
zsofi.kedvencEtelek[1];
// => 'rántott hús'
//Objektum az objektumban
const david = {
kor: 4,
cim: {
iranyitoszam: '1241',
varos: 'Budapest',
utca: 'Egyszervolt utca',
hazszam: 63
}
};
//Elem elérése
david.cim.utca;
// => 'Egyszervolt utca'
const matyi = {
kor: 1.5,
fiu: true,
cuki: true
}
//Feldolgozás a for..in ciklussal
for (const i in matyi) {
console.log(i, matyi[i]);
}
// Eredmény
// => kor 1.5
// => fiu true
// => cuki true
//C++ vector --> JavaScript tömb
const kutyuk = [
'telefon',
'fülhallgató',
'pendrive',
'e-könyv olvasó'
];
//C++ struct --> JavaScript objektum
const hallgato = {
nev: 'Mosolygó Napsugár',
neptun: 'kod123',
szak: 'Informatika BSc'
};
//Rekordok tömbje
const hallgatok = [
{
nev: 'Mosolygó Napsugár',
neptun: 'kod123',
szak: 'Informatika BSc'
},
{
nev: 'Kék Ibolya',
neptun: 'kod456',
szak: 'Informatika BSc'
}
];
~ JavaScript Object Notation (JSON)
//Tömböt tartalmazó rekordok tömbje
const hallgatok = [
{
nev: 'Mosolygó Napsugár',
neptun: 'kod123',
szak: 'Informatika BSc',
targyak: [
'Programozás',
'Webfejlesztés 2.',
'Számítógépes alapismeretek'
]
},
{
nev: 'Kék Ibolya',
neptun: 'kod456',
szak: 'Informatika BSc',
targyak: [
'Programozás',
'Webfejlesztés 2.',
'Diszkrét matematika',
'Testnevelés'
]
}
];
//Függvény általános formája
function fvnev(par1, par2) {
const valt; //lokális változó
//függvénytörzs
return visszatérési_érték;
}
//Például
function osszead(a, b) {
return a + b;
}
Konzolba vagy HTML-be helyezve
function osszegzes(tomb) {
let s = 0;
for (let i = 0; i < tomb.length; i++) {
s = s + tomb[i];
}
return s;
}
const x = [1, 3, -2, 8];
console.log('Az összeg: ' + osszegzes(x));
Beolvasás, kiírás
alert(szöveg)
– kiírásconfirm(szöveg)
– beolvasás: logikai értékprompt([szöveg, [érték]])
– beolvasás: szöveges értékconsole.log(szöveg)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Webfejlesztés 2.</title>
</head>
<body>
<script type="text/javascript">
alert('Hello világ!');
const kerdes = confirm('Szereted a csokit?');
// const nev = prompt('Mi a neved?');
const nev = prompt('Mi a neved?', 'Senki bácsi');
console.log(`Helló ${nev}!`);
</script>
</body>
</html>