Բացել գլխավոր ցանկը

ՋավաՍկրիպտ

ծրագրավորման լեզու

ՋավաՍկրիպտ (անգլ.՝ JavaScript), ինտերպրետացվող սկրիպտային լեզու։ Այն համացանցում ամենահանրահայտ սկրիպտային լեզուն է և աշխատում է բոլոր հանրահայտ բրաուզերներում, որոնց թվում են Ինտերնետ Էքսպլորեր, Mozilla Firefox, Google Chrome, Օպերա և Սաֆարի[7]:

ՋավաՍկրիպտ
Unofficial JavaScript logo 2.svg
Տեսակscripting language?, prototype-based programming language?, իմպերատիվ ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, event-driven programming language?, Համակարգչային պլատֆորմ, ծրագրավորման ինտերպրետացվող լեզու, բազմահարացուցային ծրագրավորման լեզու, ծրագրավորման լեզու, prototype-based programming?, generic programming?, Ֆունկցիոնալ ծրագրավորում, imperative programming?, aspect-oriented programming? և event-driven programming?
Կատարման ձևինտերպրետացվող է
Առաջացել է1995 թ․
ՍտեղծողԲրենդան Այկ
ՆախագծողԲրենդան Այկ
Տիպիզացիադինամիկ
Համացանցի տվյալների տեսակapplication/javascript[1][2][3]
Հիմնական իրականացումներKJS, Rhino, SpiderMonkey, V8, WebKit
Ընթացիկ տարբերակECMAScript 2018 (հունիս 2018)[4]
Հիմքի վրա էES?
Ներշնչվել էScheme, Self, Ջավա, C, LiveScript?, Python, Lua, Perl, AWK և HyperTalk?
ՍեփականատերSun Microsystems և Օրաքլ[5]
Անվանված էՋավա[6]
Կայքdeveloper.mozilla.org/docs/Web/JavaScript
JavaScript Վիքիպահեստում

Այս լեզուն առաջին անգամ կիրառվել է Netscape Communications-ի կողմից Netscape Navigator 2 beta (1995) բրաուզերում։ ՋավաՍկրիպտ լեզուն ստեղծվել է Բրենդան Այկի կողմից 1995 թ-ին։

Բովանդակություն

Ինչ է ՋավաՍկրիպտըԽմբագրել

  • ՋավաՍկրիպտը նախագծվել է կայքերի HTML էջերին դինամիկություն հաղորդելու համար
  • ՋավաՍկրիպտը սկրիպտային լեզու է
  • ՋավաՍկրիպտը սովորաբար ներառվում է ուղղակիորեն HTML ֆայլերի մեջ
  • ՋավաՍկրիպտը ինտերպրետացվող լեզու է

ՋավաՍկրիպտԽմբագրել

Նախքան Բրենդան Այկի ներգրավումը Netscape ընկերություն (1995 թվականի ապրիլի 4)[8], խնդիր էր դրված ընդլայնել ծրագրավորման սխեման՝ Scheme կամ Netscape զննարկիչում փոփոխության ենթարկել որոշ կարևորագույն տարրեր: Քանի-որ պահանջը դրված էր խիստ նպատակային, Էյխային ներգրավեցին ընկերություն, որպես սերվերային նյութերի պատասխանատու: Նա այս աշխատանքը կատարեց շուրջ մեկ ամիս, զբաղվեց HTTP[8] պրոտոկոլի բարելավման աշխատանքներով: Այստեղ նա ծավալեց նաև նոր ծրագրավորման աշխատանքներ: Մայիսի 8-ին ծրագրավորողը ետ վերադարձավ, զբաղվելով հաճախորդների սպասարկման աշխատանքներով (զննարկիչում), որտեղ էլ սկսեց վաստակել նոր ծրագրավորման լեզվի առաջխաղացման հաշվին: Բացի Թոմ Պակինայից (Tom Paquin), Պիկա Շելլան (Rick Schell) ևս համոզված էր, որ Netscape-ը պետք է աջակցի ծրագրավորման լեզվին, որը գրված է HTML կոդով [9]:

 
Մարկ Անդրեսսեն
 
Բիլլ Ջոյ

Բրենդան Էյխի հետ համագործակցում էին[8] հիմնադիր[10] (Netscape Communications) Մարկ Անդերսսեն և համահեղինակ (Sun Microsystems) Բիլլ Ջոյը: Որպեսզի հաջողությամբ ավարտեին աշխատանքը, ընկերությունը համագործակցության պայմանագիր ստորագրեց[11]: Նրանք նպատակ էին դրել՝ ստեղծել այնպիսի ծրագրավորման լեզու, որը բազային ծրագրավորման մաս կկազմեր, հարմար կլիներ և՛ ոճաբանի, և՛ ցմ ծրագրավորողի համար, չէր պահանջիի լրացուցիչ ծավալուն և բարդ գործողություններ կատարելու անհրաժեշտություն[8]: Առաջին ծրագիրը կոչվում էր Mocha[12][13][14], այնուհետև անվանափոխվեց LiveScript[14][15] և նախատեսված է թե՛ որպես ծրագրավորում՝ հաճախորդի համար, և թե՛ որպես ծրագիր՝ սերվերի համար (այնտեղ այն պետք է ունենա LiveWire անվանում)[11]: Որպես սինտակսներ հանդես եկան Սի և Java լեզուները, ու, քանի որ այդ ժամանակ Java-ն համարվում էր խիստ ժամանակակից ժամանակակից բառ[8][11], 1995թ. դեկտեմբերի 4-ին LiveScript լեզուն վերանվանեցին JavaScript[16], ստանալով արտոնագիր Sun-ից: JavaScript անոնսը Netscape-ի և Sun -ի համար հանդիսանում է բետա-տարբերակի (Netscape Navigator) երկրորդ թողարկումը [8]:[17].

1996 թվական -ին Microsoft ընկերությունը թողարկեց JavaScript լեզուն, JScript անվանումով: Այն առաջադրվել էր 1996թ հուլիսի 18-ին[18]: Առաջին զննարկիչը, որ աշխատեց այս ծրագրի հետ, Internet Explorer 3.0 էր:

Netscape[19][20]-ը ներկայացված է որպես ECMA ասսոցիացիայի լեզու: Ստանդարտ տարբերակն ունի ECMAScript անվանումը, նկարագրվում է ECMA-262 ստանդարտով: Առաջին տարբերակը հանդիսացավ JavaScript 1.1 տարբերակը, ինչպես նաև JScript և ScriptEasy[21][11]:

Ինչ կարող է անել JavaScript-ըԽմբագրել

  • JavaScript-ը HTML դիզայներին տալիս է ծրագրավորման գործիք
  • JavaScript-ը կարող է դինամիկ տեքստ ներդնել HTML էջի մեջ
  • JavaScript-ը կարող է արձագանքել իրավիճակներին(events), այսինքն ՝ JavaScript -ը կարող է գործել, երբ ինչ որ բան է պատահում, օրինակ երբ էջը ավարտում է բեռնավորումը, կամ երբ օգտագործողը մատնահարում է HTML էլեմենտի վրա
  • JavaScript-ը կարող է կարդալ և փոխել HTML էլեմենտի պարունակությունը
  • JavaScript-ը կարող է օգտագործվել տվյալը վավերացնելու համար մինչ վերջինիս սպասարկիչ ուղարկվելը։ Սա կարող է սպասարկչին զերծ պահել ավելորդ գործընթացներից և ծանրաբեռնվածությունից
  • JavaScript-ը կարող է օգտագործվել կայքից օգտվողի զննարկիչը ճանաչելու համար, և կախված զննարկչից՝ բեռնել տվյալ բրաուզերին սպեցիֆիկ էջը
  • JavaScript-ը կարող է օգտագործվել cookie-ներ ստեղծելու համար

JavaScript-ի կառուցվածքը կարելի է բաժանել հետեևյալ 3 մասերի

  1. ECMAScript
  2. բրաուզերի օբյեկտավորված մոդել
  3. դոկումենտի օբյեկտավորված մոդել

JavaScript-ի դյուրըմբռնելիությունը կայանում է նրա օբյեկտների կառուցվածքի մեջ։ JavaScript-ը բավականին նման է C ծրագրավորման լեզվին։ JavaScript-ի օբյեկտները պարունակում են՝

  1. մեթոդներ (ֆունկցիաներ)
  2. հատկանիշներ՝ (տվյալներ կամ այլ օբյեկտներ) նկարագրում է օբյեկտների հատկանշական գծերը
  3. իրադարձություններ (անգլ.՝ events), որոնք փոխկապակցված են օբյեկտների հետ
  4. AngularJS[22] - JavaScript- շրջանակ `բաց կոդով:

Լեզվի ձևաբանությունըԽմբագրել

JavaScript-ը կարելի է գրել անմիջապես HTML ֆայլի մեջ՝ կոդը ներառելով <script> բացվող և </script> փակվող թեգերի մեջ։ JavaScript-ը կարելի է նաև գրել .js ընդլայնմամբ առանձին ֆայլում։ Ներքևում ներկայացված է JavaScript-ի օգտագործման պարզագույն օրինակ՝

<!DOCTYPE html> 
<html>
<head>
<title>Օրինակ</title>

<script type="text/javascript">
alert("Hello World");
</script>

</head>
<body>
</body>
</html>

HTML ֆայլը ակտիվացնելիս կբացվի փոքր պատուհան Hello World ազդանշանով։

Ավելի բարդ օրինակԽմբագրել

Այս ընտրանքային կոդը ներկայացնում է JavaScript- ի տարբեր առանձնահատկություններ:
/*Գտնում է երկու թվերի ամենացածր ընդհանուր բազմապատիկը (LCM) (LCM) երկու թվերի համար */
function LCMCalculator(x, y) { // կոնստրուկտիվ ֆունկցիա

 var checkInt = function(x) { // ներքին գործառույթը
   if (x % 1 !== 0) {
     throw new TypeError(x + "is not an integer"); // var a =  mouseX
   };
   return x
 }
 this.a = checkInt(x)
   // semicolons   ^^^^   պարտադիր չէ, նոր գծի համարը բավարար է
 this.b = checkInt(y) գրառումը;

}
// Կառուցողի կողմից ստեղծված օբյեկտի նմուշների նախատիպը
// կոնստրուկտորի «նախատիպը»
LCMCalculator.prototype = { // օբյեկտի հիմնական    կոնստրուկտոր: LCMCalculator, // Սահմանվում է ծրագրային կոդը    gcd: function() { // մեթոդը, որը հաշվարկում է բաժանարարը

   // Euclidean ալգորիթմը:
   var a = Math.abs(this.a),
     b = Math.abs(this.b),
     t;
   if (a < b) {
     // swap variables
     t = b;
     b = a;
     a = t;
   }
   while (b !== 0) {
     t = b;
     b = a % b;
     a = t;
   }
   // Միայն անհրաժեշտ է հաշվարկել GCD- ն մեկ անգամ, կիրառվում է «վերահղման» այս մեթոդը:
// Իրականում ոչ վերաձեւակերպում, այն սահմանվում է օրինակով,

    // այսպիսին, որ this.gcd- ը վերաբերում է LCMCalculator.prototype.gcd- ի փոխարեն այս «վերաձևակերպմանը» :
    // Նշեք, որ , եթե LCMCalculator օբյեկտի անդամները «ա» և / կամ «բ» են փոխվել, դա հանգեցնում է սխալ արդյունքների:

   // Also, 'gcd' === "gcd", this['gcd'] === this.gcd
   this['gcd'] = function() {
     return a;
   };
   return a;
 },
 // Օբյեկտի  անվանումները կարող են սահմանվել ըստ տողերի կողմից (") կամ single (') մեջբերումներ:
lcm: function() { // Variable անունները կապված չեն օբյեկտի հատկությունների հետ, e.g., |lcm|ոչ թե |this.lcm|:
//չօգտագործել |this.a*this.b| խուսափելով FP ճշգրտության դասերից:
var lcm = this.a / this.gcd() * this.b; // Միայն մեկ անգամ պետք է հաշվարկի lcm, այնպես որ «վերահղեք» այս մեթոդը:
this.lcm = function() { return lcm; }; return lcm; }, toString: function() { return "LCMCalculator: a = " + this.a + ", b = " + this.b; }

};

// Սահմանել ընդհանուր գործառույթ. այն իրականացվում է վեբ բրաուզերների համար:
function output(x) {

 document.body.appendChild(document.createTextNode(x));
 document.body.appendChild(document.createElement('br'));

}

// Նշում: Array's map() and forEach() սահմանվում են JavaScript 1.6 տարբերակի համար:
// Դրանք կիրառվում են այստեղ JavaScript- ին բնորոշ ֆունկցիոնալությունը ցուցադրելու համար:

[

 [25, 55],
 [21, 56],
 [22, 58],
 [28, 56]

].map(function(pair) { // array literal + mapping function

   return new LCMCalculator(pair[0], pair[1]);
 }).sort((a, b) => a.lcm() - b.lcm()) // sort with this comparative function; => is a shorthand form of a function, called "arrow function"
 .forEach(printResult);

function printResult(obj) {

 output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());

} Բրաուզերի պատուհանում պետք է ցուցադրվի հետեւյալ արդյունքը.

LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638

Տարբերակների պատմությունԽմբագրել

Տարբերակ Թողարկման ամսաթիվ Համարժեք է Netscape
Navigator
Mozilla
Firefox
Internet
Explorer
Opera Safari Google
Chrome
1.0 Մարտ 1996 2.0 3.0
1.1 Օգոստոս 1996 3.0
1.2 Հունիս1997 4.0-4.05 3
1.3 Հոկտեմբեր 1998 ECMA-262 1st + 2nd edition 4.06-4.7x 4.0 5[23]
1.4 (Netscape)
Server
6
1.5 Նոյեմբեր 2000 (ECMA-262 3rd edition) 6.0 1.0 5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 5.8)
7.0 3.0-5 1.0-10.0.666
1.6 Նոյեմբեր 2005 1.5 + array extras + array and string generics + E4X 1.5
1.7 Հոկտեմբեր 2006 1.6 + Pythonic generators + iterators + let 2.0 28.0.1500.95
1.8 Հունիս 2008 1.7 + generator expressions + expression closures 3.0 11.50
1.8.1 1.8 + native JSON support + minor updates 3.5
1.8.2 Հունիս 22, 2009 1.8.1 + minor updates 3.6
1.8.5 Հուլիս 27, 2010 1.8.2 + new features for ECMA-262 5th edition compliance 4.0

ԾանոթագրություններԽմբագրել

  1. https://tools.ietf.org/html/rfc4329#section-7.2
  2. https://www.iana.org/assignments/media-types/application/javascript
  3. https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
  4. ECMAScript 2018 Language Specification
  5. http://tsdr.uspto.gov/#caseNumber=75026640&caseType=SERIAL_NO&searchType=statusSearch
  6. https://www.youtube.com/watch?v=XOmhtfTrRxc&t=2m5s
  7. JavaScript Introduction
  8. 8,0 8,1 8,2 8,3 8,4 8,5 Hamilton Naomi։ «The A-Z of Programming Languages: JavaScript»։ a-z of programming languages (անգլերեն)։ ComputerWorld։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  9. Eich Brendan։ «Popularity» (անգլերեն)։ Արխիվացված օրիգինալից-ից 2008-04-07-ին։ Վերցված է 2009-11-18 
  10. Frommer Dan։ «Marc Andreessen Joins Facebook Board» (անգլերեն)։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  11. 11,0 11,1 11,2 11,3 {{{заглавие}}}. — P. 1, 2. — ISBN 978-0-470-22780-0
  12. Brendan Eich։ «Popularity» (անգլերեն)։ անհատական բլոգ։ Վերցված է 18 մարտի 2015 
  13. Brendan Eich։ «New JavaScript Engine Module Owner» (անգլերեն)։ անհատական բլոգ։ Վերցված է 18 մարտ 2015 
  14. 14,0 14,1 , JavaScript. Գրպանի ուղեցույց: Անհրաժեշտ հրահանգներ և կոդ (խմբ. Քրիստիան Ուենց (Cristian Wenz); թարգմ. անգլ. Ի. Վ. Բերշտեյն) 272 էջ 18, էջեր 272 — 272 էջ, ISBN 978-5-8459-1186-5։
  15. Paul Krill (2008-06-23)։ «JavaScript creator ponders past, future» (անգլերեն)։ InfoWorld։ Վերցված է 2015-05-03։ «Eich: That’s right. It was all within six months from May till December (1995) that it was Mocha and then LiveScript. And then in early December, Netscape and Sun did a license agreement and it became JavaScript.» 
  16. Bellis Mary։ «The History of JavaScript»։ About.com Guide (անգլերեն)։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  17. «Netscape and Sun Announce Javascript(TM), the Open, Cross-Platform Object Scripting Language for Enterprise Networks and the Internet» (անգլերեն)։ Netscape Communications, Sun Microsystems։ Արխիվացված օրիգինալից-ից 1996-12-16-ին։ Վերցված է 2009-11-17 
  18. «Microsoft Announces ActiveX Scripting» (անգլերեն)։ Microsoft։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-17 
  19. {{hwdva] | հեղինակ = Silwa C. | վերնագիր = Scripting standard coming | հղում = https://books.google.am/books?id=kxcEAAAAMBAJ&pg=PA10&lpg=PA10&dq=Netscape+submitted+the+JavaScript+specification&source=bl&ots=JEnGQvNAmu&sig=chtE3zvk_PmmkxWi14D6XEKyRIs&hl=ru&ei=QyEFS7f-EciB_Qbms6G4Dw&sa=X&oi=book_result&ct=result&resnum=4&ved=0CB4Q6AEwAw#v=onepage&q=&f=false | լեզու = en | թողարկում = Network World | տիպը =ամսագիր | թողարկումը = IDG Network World Inc | տարի = 1996 | գլուխ = 13 | համար = 49 | էջեր = 10 }}
  20. Սիբախ Պիտեր։ «Ծանոթացում ECMAscript-ի հետ»։ developerWorks Ռուսաստան։ IBM։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-19 
  21. Քաղվածելու սխալ՝ Սխալ <ref> պիտակ՝ nombasHistory անվանումով ref-երը տեքստ չեն պարունակում:
  22. AngularJS
  23. «What Version of Javascript»։ Javascript.about.com։ 2016-02-22։ Վերցված է 2017-02-24 

Արտաքին հղումներԽմբագրել