JavaScript
| JavaScript | |
| Paradigma | Multi-paradigma: szkript, objektumorientált (prototípus-alapú), imperatív, funkcionális |
| Jellemző kiterjesztés | .js |
| Megjelent | 1995. december 4. |
| Tervező | Brendan Eich |
| Fejlesztő | Netscape Communications Corporation, Mozilla Alapítvány |
| Utolsó kiadás | |
| Típusosság | dinamikus, duck |
| Megvalósítások | KJS, Rhino, SpiderMonkey, V8, Carakan, Chakra |
| Hatással volt rá | Scheme, Self, Java, C, Python, AWK, HyperTalk |
| Befolyásolt nyelvek | ActionScript, AtScript, CoffeeScript, Dart, JScript .NET, Objective-J, QML, TypeScript, Node.js, LiveScript |
| Weboldal | |
A JavaScript programozási nyelv egy objektumorientált, prototípus-alapú szkriptnyelv, amelyet weboldalakon elterjedten használnak. Ebből fejlődött ki a TypeScript, ami a JavaScript típusos változatának tekinthető.
Története
[szerkesztés]| Ez a lap vagy szakasz tartalmában elavult, korszerűtlen, frissítésre szorul. Frissítsd időszerű tartalommal, munkád végeztével pedig távolítsd el ezt a sablont! |
Elkészülése a Netscape-nél
[szerkesztés]Eredetileg Brendan Eich, a Netscape Communications mérnöke fejlesztette ki; neve először Mocha, majd LiveScript volt, később „JavaScript” nevet kapott, és szintaxisa közelebb került a Sun Microsystems Java programozási nyelvéhez. A JavaScriptet először 1997–99 között szabványosította az ECMA „ECMAScript” néven. A jelenleg is érvényes szabvány az ECMA-262 Edition 3 (1999. december), ami a JavaScript 1.5-nek felel meg. Ez a szabvány egyben ISO szabvány is.
A Microsoft általi átvétele
[szerkesztés]A Microsoft 1995-ben kifejlesztette az Internet Explorert, ami a Netscape-pel való böngészőháborúhoz vezetett. A Microsoft a Netscape Navigator JavaScript-feldolgozójának forráskódja segítségével létrehozta a sajátját, a JScriptet.
A JScript először 1996-ban jelent meg a CSS kezdeti támogatása és a HTML néhány kiegészítése mellett. E megvalósítások merőben különböztek a Navigatorban alkalmazottaktól,[3][4] ami megnehezítette a fejlesztőknek, hogy a weblapjaik mindkét webböngészőben jól működjenek, és ami a „Netscape-en működik legjobban” és „Internet Exploreren működik legjobban” széles körű használatához vezetett sok éven át.[3][5]
A JScript felemelkedése
[szerkesztés]1996 novemberében a Netscape elküldte a JavaScriptet az ECMA International-nek, ami a sztenderddé válás kiindulópontja. Ez vezetett 1997 júniusában az első ECMAScript nyelv hivatalos kiadásához.
A sztenderdizációs folyamat néhány évig folytatódott, közben az ECMAScript 2 1998 júniusában, az ECMAScript 3 1999 decemberében lett kiadva. Az ECMAScript 4-en a munka 2000 decemberében kezdődött.
Közben a Microsoft egyre dominánsabb lett a böngészőpiacon. A 2000-es évek elejére az Internet Explorer részesedése elérte a 95%-ot.[6] Ez azt jelenti, hogy a JScript tulajdonképp sztenderddé vált a weben.
A Microsoft eleinte részt vett a sztenderdizációban, s néhány tervezetet is megvalósított, de végül megszűnt közreműködni.
ECMAScript 5
[szerkesztés]Éves frissítések
[szerkesztés]Szerkesztés, előállítás
[szerkesztés]A JavaScript kód vagy a HTML fájlban, vagy külön (jellemzően .js kiterjesztésű) szövegfájlban van. Ezek a fájlok tetszőleges szövegszerkesztő (nem dokumentumszerkesztő) programmal szerkeszthetőek.
Futási környezete
[szerkesztés]A JavaScript esetében a futási környezet jellemzően egy webböngésző, illetve annak JavaScript-motorja.
JavaScript alkalmazások futtathatók továbbá a böngészőn kívül is, Node.js vagy Deno segítségével, melyek Windows, macOS és Linux alapú operációs rendszerekkel is kompatibilisek.
JavaScript programok Windows alapú környezetben futtathatók továbbá a wscript.exe és a cscript.exe segítségével is.
Inkompatibilitások
[szerkesztés]Bár a nyelvet szabványosították, mégis részben különbözően implementálják a JavaScriptet a különböző böngészők.
Adattípusok
[szerkesztés]Alaptípusok:[7]
- Elemi típusok:
boolean(logikai érték, értéke igaz vagy hamis)null(érték hiányát jelzi)undefined(egy meghatározatlan érték)number(szám, lehet egész és lebegőpontos is). Léteznek különleges értékek is, mint a NaN (Not a Number, azaz: Nem szám) érték, amit akkor használ a nyelv, ha értelmezhetetlen a matematikai művelet eredménye, például 0/0. Lehet még pozitív, vagy negatív végtelen, vagy szintén pozitív/negatív 0 érték. A JavaScript különbséget tesz a két 0 között.BigInt(tetszőleges pontosságú egész szám)string(karakterlánc)symbol(egy olyan speciális típus, aminek két példánya soha nem egyenlő)
object(objektum, minden összetett típus ebbe tartozik)
Szintaxis
[szerkesztés]Az undefined és a symbol kivételével minden elemi típusnak, valamint néhány objektumtípusnak van saját szintaxisa:
- Elemi típusok:
boolean: a két lehetséges értéketrueésfalse.null: az egyetlen lehetséges értékenull.- Egész
number,BigInt: decimális (pl.28), oktális (pl.034vagy0o34–BigIntnél nem hagyható el azo), hexadecimális (pl.0x1c) vagy bináris (pl.0b11100) szám,BigIntesetébennutótaggal (pl.9007199254740992nvagy0x20000000000000n). A számrendszert jelzőo,x, illetveb, valamint a hexadecimális számok 9-néla–fszámjegyei lehetnek kis- és nagybetűsek is, aBigIntek n utótagja viszont mindig kisbetűs. - Törtrésszel is rendelkező
number: decimális szám, a tizedes elválasztó a pont, írható normálalakhoz hasonló formában (de a normálalaktól eltérően a mantisszának nem kell 1 és 10 közötti abszolút értékűnek lennie), pl.3.14vagy6e23. string: lásd lentebb.
- Objektumtípusok:
Object(általános objektum):{ név1: érték1, név2: érték }, pl.{ név: 'Wikipédia', mottó: 'A szabad enciklopédia' }.Array(tömb, több különböző adattípust is tartalmazhat):[ elem1, elem2 ], pl.[ 'pi', 3.14 ].RegExp(reguláris kifejezés):/regex/.Function(függvény – a függvények is változónak számítanak): pl.function f(x) { return 2*x; }vagy(x) => 2*x.
Az elemi típusok közül az undefined az undefineddal érhető el, ez azonban a nulltól eltérően nem kulcsszó, hanem a globális névtér egy változója,[8] symbol típusú értékek pedig a Symbol() globális névtérbeli függvénnyel hozhatók létre.[9]
String
[szerkesztés]A string típusú adatokat aposztróf ('…'), idézőjel ("…") vagy backtick (`…`) pár közé írjuk. Az első két megoldás teljesen azonos jelentésű, így az éppen nem használt jeleket is tartalmazhatja a szöveg.
const a = "Hymnus, a' Magyar nép zivataros századaiból";
const b = 'Idézőjel: (")';
const c = " \" ' ";
ami egyszerűbben:
const a="Hymnus, a' Magyar nép zivataros századaiból", b='Idézőjel: "', c="\"'";
Az első példában az aposztróf, a másodikban az idézőjel tagja a string adatnak, míg a harmadik példában mind a kettő. A harmadik példában a backslash karakter miatt nincs speciális jelentése az idézőjelnek.
A backtick (`…`) egy sablonstring, ami a normál (aposztrófos vagy idézőjeles) stringektől eltérően tartalmazhat sortöréseket, beágyazhat tetszőleges JavaScript-kifejezéseket, valamint speciális függvények teljesen más jelentést is adhatnak neki.[10] Példák sablonstringekre: