ECMAScript[2] — JavaScript, JScript və ActionScript daxil olmaqla skript dilləri üçün standart. Bu, müxtəlif veb-brauzerlər arasında veb-səhifələrin qarşılıqlı əlaqəsini təmin etmək üçün nəzərdə tutulmuş JavaScript standartı kimi tanınır.[3] ECMA-262 sənədində Ecma International tərəfindən standartlaşdırılıb.
ECMAScript | |
---|---|
Yaradılma tarixi | iyun 1997 |
Müəlliflər | Brendan Eyx, ECMA International |
Tərtibatçılar | Brendan Eyx |
Fayl sonluğu |
.es [1] |
Təsirlənib | C, CoffeeScript, Perl, Python, Java, Scheme |
ecma-international.org |
ECMAScript adətən World Wide Web-də müştəri tərəfi skripti üçün istifadə olunur və o, işləmə mühitləri olan Node.js,[4] deno[5] və bun[6] istifadə edən server proqramları və xidmətləri üçün getdikcə daha çox istifadə olunur.
ECMAScript spesifikasiyası Brendan Eyx tərəfindən hazırlanmış, əvvəlcə Mocha, sonra LiveScript və nəhayət JavaScript adlandırılan skript dilinin standartlaşdırılmış spesifikasiyasıdır.[7] 1995-ci ilin dekabrında Sun Microsystems və Netscape press-relizlə JavaScript-i elan etdilər.[8] 1996-cı ilin noyabrında Netscape JavaScript-in standartlaşdırılmasını inkişaf etdirmək üçün Ecma International standartlar təşkilatının iclasını elan etdi.[9] ECMA-262-nin ilk nəşri 1997-ci ilin iyununda Ecma Baş Assambleyası tərəfindən qəbul edilmişdir. O vaxtdan bəri dil standartının bir neçə nəşri yayımlanmışdır. "ECMAScript" adı dilin standartlaşdırılması ilə məşğul olan təşkilatlar, xüsusilə Netscape və Microsoft arasında kompromis idi, onların mübahisələri ilkin standartlar sessiyalarında üstünlük təşkil edirdi. Eyx, "ECMAScript həmişə ekzema kimi səslənən arzuolunmaz bir əmtəə adı idi" demişdi.[10] ECMAScript təhlükəsizlik təhlili və standartlaşdırma üçün Stenford Universitetində və London İmperial Kollecinin Hesablama Departamentində əməliyyat semantikası vasitəsilə rəsmiləşdirilib.[11] "ECMA" 1994-cü ilə qədər "Avropa Kompüter İstehsalçıları Assosiasiyası"nı (ing. European Computer Manufacturers Association) ifadə edirdi.
ECMAScript dili strukturlaşdırılmış, dinamik, funksional və prototip əsaslı xüsusiyyətləri ehtiva edir.[12]
ECMAScript JavaScript C tipli strukturlaşdırılmış proqramlaşdırmanı dəstəkləyir. Əvvəllər JavaScript yalnız var
açar sözündən istifadə edərək funksiyaların əhatə dairəsini dəstəkləyirdi, lakin ECMAScript 2015 let
və const
açar sözlərini əlavə etdi və JavaScript-ə həm blokun əhatə dairəsini, həm də funksiyaların əhatəsini dəstəkləməyə imkan verdi. JavaScript avtomatik nöqtəli vergülün qoyulmasını dəstəkləyir, yəni adətən C dilində ifadəni dayandıran nöqtəli vergüllər JavaScript-də istifadə olunmaya bilər.[13]
C tipli dillər kimi, nəzarət axını while
, for
, do / while
, if / else
və switch
ifadələri ilə həyata keçirilir. Funksiyalar zəif tiplidir və istənilən tipi qəbul edib qaytara bilər. Göstərilməyən arqumentlər defolt olaraq undefined
olur.
ECMAScript zəif tiplidir. Bu o deməkdir ki, müəyyən tiplər yerinə yetirilən əməliyyat əsasında gizli şəkildə təyin edilir. Bununla belə, JavaScript-də dəyişənin bir tipdən digərinə çevrilməsinin həyata keçirilməsində bir neçə qəribəlik var. Bu qəribəliklər "Wat" adlı müzakirənin mövzusu olmuşdur.[14][15]
ECMAScript dinamikdir. Tip ifadə ilə deyil, dəyərlə əlaqələndirilir. ECMAScript obyektlərin növünü yoxlamaq üçün müxtəlif yolları, o cümlədən "duck typing"i dəstəkləyir.[16]
ES 2015-dən bəri JavaScript-in transpilyasiyası çox adi hala çevrilib. Transpilyasiya JavaScript-in daha yeni versiyalarının istifadə olunduğu mənbədən mənbəyə kompilyasiyadır və ötürücü mənbə kodunu köhnə brauzerlər tərəfindən dəstəklənməsi üçün yenidən yazır. Adətən, transpilerlər brauzerlərin bütün versiyaları ilə uyğunluğu qorumaq üçün ES3-ə qədər enir. Müəyyən bir versiyaya köçürmək üçün parametrlər ehtiyaca uyğun olaraq konfiqurasiya edilə bilər. Transpilyasiya qurulma prosesinə əlavə bir addım əlavə edir və bəzən polifillərə ehtiyac duymamaq üçün edilir. Polifillər onlara çatmayan köhnə mühitlər üçün yeni xüsusiyyətlər yaradır və bunu istifadəçinin brauzeri və ya server kimi tərcüməçinin iş mühitində edir. Bunun əvəzinə, transpilyasiya ECMA kodunu tərcüməçiyə çatmazdan əvvəl tərtibatın qurma mərhələsində özü yenidən yazır.
2010-cu ildə Ecma International Ecma 262 ECMAScript üçün standart testini hazırlamağa başladı.[17] Test262 JavaScript tətbiqinin ECMAScript Spesifikasiyasına nə qədər yaxından əməl etdiyini yoxlamaq üçün istifadə edilə bilən ECMAScript uyğunluq test paketidir. Test dəsti minlərlə fərdi testdən ibarətdir, onların hər biri ECMAScript spesifikasiyasının bəzi xüsusi tələblərini sınaqdan keçirir. Test262-nin inkişafı Ecma Texniki Komitəsinin 39 (TC39) layihəsidir. Test freymvorku və fərdi testlər TC39-un üzv təşkilatları tərəfindən Ecma-ya təqdim olunur.
Google (Sputnik test paketi) və hər ikisi minlərlə testdə iştirak edən Microsoft tərəfindən layihəyə mühüm töhfələr verilib. Test262 test paketi 2020-ci ilin yanvar ayına olan 38014 testdən ibarət idi.[18] ES7 vasitəsilə ECMAScript spesifikasiyası əsas veb-brauzerlərdə yaxşı dəstəklənir. Aşağıdakı cədvəl ECMAScript-in ən son nəşrləri ilə bağlı proqram təminatının cari versiyaları üçün uyğunluq dərəcəsini göstərir.
Skriptləşdirmə mühərriki | İstinad tətbiqləri | Uyğunluq | |||
---|---|---|---|---|---|
ES5[19] | ES6 (2015)[20] | ES7 (2016)[21] | Yeni (2017+)[21][22] | ||
SpiderMonkey | Firefox 94 | 100% | 98% | 100% | 100% |
V8 | Google Chrome 95, Microsoft Edge 95, Opera 80 | 100% | 98% | 100% | 100% |
JavaScriptCore | Safari 15 | 100% | 99% | 100% | 90% |
ECMA-262 və ya ECMAScript Dil Spesifikasiyası ECMAScript Dilini və ya sadəcə ECMAScript-i müəyyən edir.[23] ECMA-262 yalnız dil sintaksisini və Array
, Function
və globalThis
kimi əsas tətbiqi proqramlaşdırma interfeysinin (API) semantikasını müəyyən edir, JavaScript-in etibarlı tətbiqləri isə giriş/çıxış və fayl sistemi ilə işləmə kimi öz funksiyalarını əlavə edir.
The core JavaScript programming language [...] is based on the ECMAScript standard, or ES for short.