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>

nullundefinedAdott 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>