ՋավաՍկրիպտ

Վիքիպեդիայից՝ ազատ հանրագիտարանից
(Վերահղված է JavaScriptից)
Jump to navigation Jump to search
ՋավաՍկրիպտ
Unofficial JavaScript logo 2.svg
Step6skasm.PNG
Տեսակscripting language?, prototype-based programming language?, իմպերատիվ ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, միջոցառմամբ կողմնորոշվող ծրագրավորման լեզու, Համակարգչային պլատֆորմ, ծրագրավորման ինտերպրետացվող լեզու, բազմահարացուցային ծրագրավորման լեզու և ծրագրավորման լեզու
Կատարման ձևինտերպրետացվող է
Առաջացել է1995 թ․
ՆախագծողԲրենդան Այկ
Ընդլայնումներ.js
Տիպիզացիադինամիկ
Համացանցի տվյալների տեսակapplication/javascript[1][2][3]
Հիմնական իրականացումներKJS, Rhino, SpiderMonkey, V8, WebKit
Հիմքի վրա էECMAScript?
Ներշնչվել էScheme, Self, Ջավա, C, LiveScript?, Lua, Perl, AWK և HyperTalk?
ՍեփականատերSun Microsystems[4] և Օրաքլ[5]
Անվանված էՋավա[6]
JavaScript Վիքիպահեստում

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

Այս լեզուն առաջին անգամ կիրառվել է 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[11][21]:

Ինչ կարող է անել 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. Netscape and Sun announce JavaScript, the open, cross-platform object scripting language for enterprise networks and the internet — 1995.
  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 

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]