ՋավաՍկրիպտ

Վիքիպեդիայից՝ ազատ հանրագիտարանից
(Վերահղված է JavaScriptից)
Jump to navigation Jump to search
ՋավաՍկրիպտ
Տեսակ scripting language, Համակարգչային պլատֆորմ, interpreted language, multi-paradigm programming language, prototype-based programming language, imperative programming language, ֆունկցիոնալ ծրագրավորման լեզու և event-driven programming language
Կատարման ձև ինտերպրետացվող է
Առաջացել է 1995 թ․
Ստեղծող Բրենդան Այկ
Նախագծող Բրենդան Այկ
Ընդլայնումներ .js[1]
Տիպիզացիա դինամիկ
Համացանցի տվյալների տեսակ text/javascript[2] և application/javascript[3][1]
Հիմնական իրականացումներ KJS, Rhino, SpiderMonkey, V8, WebKit
Ընթացիկ տարբերակ ECMAScript 2017 (հունիս 2017)[4]
Հիմքի վրա է ES
Ներշնչվել է Scheme, Self, Ջավա, C և LiveScript
Սեփականատեր Sun Microsystems և Օրաքլ[5]
Կայք developer.mozilla.org/en-US/docs/Web/JavaScript
JavaScript Վիքիպահեստում

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

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

Ինչ է ՋավաՍկրիպտը[խմբագրել | խմբագրել կոդը]

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

JavaScript[խմբագրել | խմբագրել կոդը]

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

, Պիկա Շելլա (Rick Schell), համոզված էր, որ Netscape-ը պետք է աջակցի ծրագրավորման լեզվին, որը գրված է HTML կոդով [8].

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

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

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

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

Ինչ կարող է անել 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[21] - 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[22]
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. 1,0 1,1 https://www.iana.org/assignments/media-types/application/javascript
  2. https://tools.ietf.org/html/rfc4329#section-7.1
  3. https://tools.ietf.org/html/rfc4329#section-7.2
  4. ECMAScript 2017 Language Specification
  5. http://tsdr.uspto.gov/#caseNumber=75026640&caseType=SERIAL_NO&searchType=statusSearch
  6. JavaScript Introduction
  7. 7,0 7,1 7,2 7,3 7,4 7,5 Hamilton Naomi։ «The A-Z of Programming Languages: JavaScript»։ a-z of programming languages (անգլերեն)։ ComputerWorld։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  8. Eich Brendan։ «Popularity» (անգլերեն)։ Արխիվացված օրիգինալից-ից 2008-04-07-ին։ Վերցված է 2009-11-18 
  9. Frommer Dan։ «Marc Andreessen Joins Facebook Board» (անգլերեն)։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  10. 10,0 10,1 10,2 10,3 {{{заглавие}}}. — P. 1, 2. — ISBN 978-0-470-22780-0
  11. Brendan Eich։ «Popularity» (անգլերեն)։ անհատական բլոգ։ Վերցված է 18 մարտի 2015 
  12. Brendan Eich։ «New JavaScript Engine Module Owner» (անգլերեն)։ անհատական բլոգ։ Վերցված է 18 մարտ 2015 
  13. 13,0 13,1 , JavaScript. Գրպանի ուղեցույց: Անհրաժեշտ հրահանգներ և կոդ (խմբ. Քրիստիան Ուենց (Cristian Wenz); թարգմ. անգլ. Ի. Վ. Բերշտեյն) էջ 18, ISBN 978-5-8459-1186-5։
  14. 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.» 
  15. Bellis Mary։ «The History of JavaScript»։ About.com Guide (անգլերեն)։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-18 
  16. «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 
  17. «Microsoft Announces ActiveX Scripting» (անգլերեն)։ Microsoft։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-17 
  18. {{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 }}
  19. Սիբախ Պիտեր։ «Ծանոթացում ECMAscript-ի հետ»։ developerWorks Ռուսաստան։ IBM։ Արխիվացված օրիգինալից-ից 2011-08-22-ին։ Վերցված է 2009-11-19 
  20. Քաղվածելու սխալ՝ Սխալ <ref> պիտակ՝ nombasHistory անվանումով ref-երը տեքստ չեն պարունակում:
  21. AngularJS
  22. «What Version of Javascript»։ Javascript.about.com։ 2016-02-22։ Վերցված է 2017-02-24 

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