diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index fd7ca66da..85e5fdaf0 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -1,14 +1,14 @@ -# Įvadas į JavaScript +# JavaScript įvadas -Pažvelkime kuo įpatinga JavaScript kalba, ką mes galime su ja padaryti ir kokios kitos technologijos gali būti naudojamos kartu su ja +Pažvelkime kuo ypatinga JavaScript kalba, ką mes galime su ja padaryti ir kokios kitos technologijos gali būti naudojamos kartu. ## Kas yra JavaScript? -Iš pat pradžių *JavaScript* buvo sukurtas tam, kad *"padaryti tinklalapius gyvus"*. +Iš pat pradžių *JavaScript* buvo sukurta tam, kad *"padarytų tinklalapius gyvus"*. -Programos, parašytos šia kalba yra vadinamos *skriptais*. Jos gali būti parašytos tinklalapio HTML ir veikti automatiškai, kuomet tinklalapis kraunamas. +Programos, parašytos šia kalba yra vadinamos *skriptais* (and. scripts). Jos gali būti parašytos tinklalapio HTML ir suveikti automatiškai, kuomet tinklalapis kraunamas. -Skriptai yra rašomi ir vykdomi plain tekstu. Jiem nereikia kompiliavimo fazės. +Skriptai yra rašomi ir vykdomi paprastu (ang. "plain") tekstu. Jiems nereikia kompiliavimo fazės. Šiuo aspektu JavaScript labai skiriasi nuo [Java](https://en.wikipedia.org/wiki/Java_(programming_language)). @@ -18,100 +18,100 @@ Iš pat pradžių JavaScript turėjo kitą pavadinimą: "LiveScript". Tačiau Ja Tačiau ilgainiui JavaScript tapo nepriklausoma kalba, turinti atskirą specifikaciją, kuri vadinama [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript). Šiuo metu JavaScript ir Java neturi nieko bendro. ``` -Dabar JavaScript gali būti vykdomas ne tik naršyklėje, bet taip pat ir serveryje arba praktiškai bet kokiame įrenginyje, kuris turi specialią programą, vadinama JavaScript varikliu [(JavaScript engine)](https://en.wikipedia.org/wiki/JavaScript_engine). +Dabar JavaScript gali būti vykdomas ne tik naršyklėje, bet taip pat ir serveryje arba praktiškai bet kokiame įrenginyje, kuris turi specialią programą, vadinamą JavaScript varikliu [(JavaScript engine)](https://en.wikipedia.org/wiki/JavaScript_engine). -Naršyklės turi savo vidinį variklį, kuris kartais vadinamas "JavaScript virtuali mašiną" +Naršyklės turi savo vidinį variklį, kuris kartais vadinamas "JavaScript virtuali mašina" -Skirtingi varikliai turi skirtingus "nickus". Pavyzdžiui: +Skirtingi varikliai turi skirtingus slapyvardžius (ang. "nicknames"). Pavyzdžiui: - [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- Chrome ir Opera. - [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- Firefox. -- Egzistuoja kitų nickų, tokių kaip "Trident", "Chakra" skirtingom IE versijom, "ChakraCore" Microsoft Edge naršklėje, "Nitro" ir "SquirellFish" Safari ir t.t. +- Egzistuoja kiti slapyvardžiai, tokie kaip "Trident", "Chakra" skirtingoms IE versijom, "ChakraCore" Microsoft Edge naršklėje, "Nitro" ir "SquirellFish" Safari ir t.t. Šias sąvokas verta atsiminti, nes jos naudojamos straipsniuose, skirtuose programuotojams. Mes taip pat jas naudosime. Pavyzdžiui, jeigu "feature X yra palaikoma V8", reiškias jinai ko gero veikia Chrome ir Opera naršklėse. ```smart header="Kaip veikia varikliai?" -Varikliai yra sudėtingi daiktai, bet basic'ai yra paprasti. +Varikliai yra sudėtingi, bet pagrindai yra paprasti. -1. Variklis (vidinis, jei jis yra naršyklėje) skaito ("parsina") skriptą. -2. Konvertuoja ("kompiliuoja") skriptą į mašininį kodą. -3. Vykdomas mašininis kodas. +1. Variklis (vidinis, jei jis yra naršyklėje) skaito (ang. "parsing") skriptą. +2. Konvertuoja (dar kitaip - kompiliuoja) skriptą į mašininį kodą. +3. Įvykdomas mašininis kodas. Varikliai optimizuoja kodą kiekviename žingsnyje. Jie netgi stebi sukompiliuotą skriptą, kuomet jis vykdomas, bei analizuoja duomenis, kurie jame naudojami, ir pagal tai taiko papildomas optimizacijas. Po viso šio procesio, skriptai yra vykdomi gan greitai. ``` -## Ką gali JavaScript'as padaryti naršyklėje? +## Ką gali JavaScript padaryti naršyklėje? -Modernus JavaScript'as yra "saugi" programavimo kalba. Ji neleidžia programuotojui pasiekti atminties arba CPU, nes iš pat pradžių ji buvo sukurta naršklėm, kuriom to nereikia. +Modernus JavaScript yra "saugi" programavimo kalba. Ji neleidžia programuotojui pasiekti atminties arba CPU, nes iš pat pradžių ji buvo sukurta naršyklėms, kurioms to nereikia. -JavaScript'o galimybės stipriai priklauso nuo aplinkos, kurioje jis vykdomas. Pavyzdžiui, [Node.js](https://wikipedia.org/wiki/Node.js) palaiko funkcijas, kurios leidžia Javascript'ui skaityti/rašyti failus, vykdyti kompiuterių tinklų užklausas ir pan. +JavaScript galimybės stipriai priklauso nuo aplinkos, kurioje ji vykdomas. Pavyzdžiui, [Node.js](https://wikipedia.org/wiki/Node.js) palaiko funkcijas, kurios leidžia Javascript skaityti/rašyti failus, vykdyti kompiuterių tinklų užklausas ir pan. -Naršyklėje JavaScript'as gali daryti bet ką, kas liečia tinklalapio manipuliacijas, interakcijas su vartotojais ir web serveriu. +Naršyklėje JavaScript gali daryti bet ką, tame tarpe tinklalapio manipuliacijas, sąveikas (ang. "interaction") su vartotojais ir web serveriu. -Pavyzdžiui, JavaScript'as naršyklėje gali: +Pavyzdžiui, JavaScript naršyklėje gali: - Pridėti naują HTML į tinklalapį, pakeisti jau esamą turinį, pakeisti stilius. - Reaguoti į vartotojo veiksmus, pelės, klaviatūros paspaudimus. -- Siųsti užklausas į remote serverius, atsisiųsti ir upload'inti failus ([AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) ir [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) technologijos). -- Gauti ir nustatyti cookies, klausti vartotojo, parodyti žinutes. -- Išsaugoti duomenis kliento pusėje ("local storage"). +- Siųsti užklausas į nuotolinius (ang. "remote") serverius, atsisiųsti ir įkelti (ang. "upload") failus ([AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) ir [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) technologijos). +- Gauti ir nustatyti slapukus (ang. "cookies"), užduoti klausimus vartotojo ir parodyti žinutes. +- Išsaugoti duomenis kliento pusėje (ang. "local storage"). -## Ko NEGALI JavaScript'as naršyklėje? +## Ko NEGALI PADARYTI JavaScript naršyklėje? -JavaScript'o galimybės naryklėje yra ribojamos dėl vartotojų saugumo. Tikslas - neleisti tinklalapiam pasiekti privačius duomenis arba žaloti vartotojo duomenis. +JavaScript galimybės naryklėje yra ribojamos dėl vartotojų saugumo. Tikslas - neleisti tinklalapiams pasiekti privačius duomenis arba žaloti vartotojo duomenis. Ribojimų pavyzdžiai: -- JavaScript'as tinklalapyje negali skaityti/rašyti failus kietajame diske, juos kopijuoti arba vykdyti programas. JavaScript'as neturi tiesioginios prieigos prie operacinės sistemos funkcijų. +- JavaScript tinklalapyje negali skaityti/rašyti failus esančius kietajame diske, juos kopijuoti arba vykdyti programas. JavaScript neturi tiesioginės prieigos prie operacinės sistemos funkcijų. - Modernios naršklės leidžia dirbti su failais, bet prieiga ribojama ir tai leidžiama tik jeigu vartotojas įvykdo kažką konkretaus. Pavyzdžiui, dragg'ina failą į naršklę arba pažymi failą per `` tagą. + Modernios naršklės leidžia dirbti su failais, bet prieiga ribojama ir tai leidžiama tik jeigu vartotojas įvykdo kažką konkretaus. Pavyzdžiui, perkelia failą į naršyklę arba pažymi failą naudodamas `` žymą. -Yra būdų komunikuoti su kamera/mikrofonu ir kitais įrenginiais, bet tai reikalauja išreikštinio vartotojo leidimo. Taigi, JavaScript'inis tinklalapis negali suktai įjungti web kamerą, stebėti aplinką ir siųsti informaciją į [NSA](https://en.wikipedia.org/wiki/National_Security_Agency). -- Skirtingi tabai dažniausiai nežino vienas apie kitą. Tačiau kartais vienas tab'as naudoja JavaScript'ą tam, kad atidarytų kitą tab'ą, bet netgi tokiu atveju, JavaScript'as viename tab'e negali pasiekti kito tab'o, jeigu jie ateina iš skirtingų tinklalapių (skirtingas domenas, protokolas arba portas). - Tai vadinama "Same Origin Policy". Tam, kad tai apeiti, *abudu tinklalapiai* turi sutikti apsikeisti duomenimis ir turėti specialų JavaScript kodą, kuris tai handlintų. Mes apie tai kalbėsime viename iš tutorialų. - Šis ribojimas yra, vėlgi, dėl vartotojų saugmo. Tinklapis `http://anysite.com`, kurį vartotojas atidarė, neturėtų pasiekti kito naršklės tabo su URL `http://gmail.com` ir vogti informaciją. -- JavaScript'as gali lengvai komunikuoti internetu su serveriu, iš kurio atėjo tinklalapis. Bet tinklalapio galimybės gauti duomenis iš kitų tinklapių/duomenų yra kiek sudėtingesnės. Nors ir įmanoma, tai reikalauja išreikštinio susitarimo (per HTTP header'ius) iš remote serverio pusės. Vėlgi, dėl saugumo priežasčių. +Yra būdų komunikuoti su kamera/mikrofonu ir kitais įrenginiais, bet tai reikalauja išreikštinio vartotojo leidimo. Taigi, JavaScript tinklalapis negali suktai įjungti web kameros, stebėti aplinkos ir siųsti informaciją į [NSA](https://en.wikipedia.org/wiki/National_Security_Agency). +- Atskiros naršyklės kortelės (ang. "tabs") dažniausiai nežino viena apie kitą. Tačiau kartais viena kortelė naudoja JavaScript tam, kad atidarytų kitą kortelę, bet netgi tokiu atveju, JavaScript vienoje kortelėje negali pasiekti kitos, jeigu jie ateina iš skirtingų tinklalapių (skirtingas domenas, protokolas arba portas). + Tai vadinama "Same Origin Policy". Tam, kad tai apeiti, *abudu tinklalapiai* turi sutikti apsikeisti duomenimis ir turėti specialų JavaScript kodą, kuris tai tvarkytų. Mes apie tai kalbėsime vienoje iš pamokų. + Šis ribojimas yra, vėlgi, dėl vartotojų saugmo. Tinklapis `http://anysite.com`, kurį vartotojas atidarė, neturėtų pasiekti kitos naršklės kortelės su URL `http://gmail.com` ir vogti informaciją. +- JavaScript gali lengvai komunikuoti internetu su serveriu, iš kurio atėjo tinklalapis. Bet tinklalapio galimybės gauti duomenis iš kitų tinklapių/duomenų yra kiek sudėtingesnės. Nors ir įmanoma, tai reikalauja išreikštinio susitarimo (per HTTP antraštes) iš nuotolinio serverio pusės. Vėlgi, dėl saugumo priežasčių. ![](limitations.svg) -Šių ribojimų nėra, jeigu JavaScript'as vykdomas ne naršyklėje, bet, pavyzdžiui, serveryje. Šiuolaikinės naršyklės taip pat turi plugin'us/extension'us, kurie gali prašyti vartotojų leidimo. +Šių ribojimų nėra, jeigu JavaScript vykdomas ne naršyklėje, bet, pavyzdžiui, serveryje. Šiuolaikinės naršyklės taip pat turi papildinius ir plėtinius(ang. "plugins/extensions"), kurie gali prašyti vartotojų leidimo. -## Ko ypatingas JavaScript? +## Kuo ypatinga JavaScript? -JavaScript turi bent jau *tris* nuostabius dalykus: +JavaScript turi bent *tris* nuostabius dalykus: ```compare + Pilna integracija su HTML/CSS + Paprastus dalykus padaryti yra nesudėtinga -+ Palaikoma visuose populiariausiuose naršyklėse ++ Palaikoma visose populiariausiose naršyklėse ``` -JavaScript'as yra vienintelė naršyklės technologija, kuri turi šiuos tris dalykus +JavaScript yra vienintelė naršyklės technologija, kuri turi šiuos tris dalykus. -Štai kuo ypatingas JavaScript'as. Dėl to tai yra viena labiausiai išplitusių technologijų, kalbant apie naršyklės interfeiso kūrimą. +Štai kuo ypatinga JavaScript. Tai yra viena labiausiai išplitusių technologijų, kalbant apie naršyklės sąsajos (ang. "interface") kūrimą. -Tačiau su JavaScript'u galima rašyti serverines, mobilias aplikacijas ir pan. +Tačiau su JavaScript galima rašyti serverines, mobilias programas (ang. "applications") ir pan. ## Alternatyvos -JavaScript'o sintaksė, be abejo, tinka ne visiem ir ne visada. Skirtingi žmonės nori skirtingų pribumbasų. +JavaScript sintaksė, be abejo, tinka ne visiem ir ne visada. Skirtingi žmonės nori skirtingų savybių. -Tas yra logiška, nes kiekvienas projektas yra skirtingas ir gali turėti labai skirtingų reikalavimų. +Nieko nuostabaus, nes kiekvienas projektas yra skirtingas ir gali turėti labai skirtingų reikalavimų. -Dėl šių priežasčių atsirado daug kalbų, kurios yra *transpiliuojamos* (konvertuojamos) į JavaScript'ą ir tik tada vykdomos naršyklėje. +Dėl šių priežasčių atsirado daug kalbų, kurios yra konvertuojamos (dar kitaip - perrašomos, ang. "*transpiling*") į JavaScript ir tik tada vykdomos naršyklėje. -Modernūs įrankiai atlieką transpiliavimą labai greitai, tad programuotojai gali programuoti šiomis kalbomis nesigilindami į patį transpiliavimo procesą. +Modernūs įrankiai atlieka perrašymą labai greitai, tad programuotojai gali programuoti šiomis kalbomis nesigilindami į patį konvertavimo procesą. Tokių kalbų pavyzdžiai: -- [CoffeeScript](http://coffeescript.org/) yra "syntactic sugar" JavaScript'ui. Trumpesnė sintaksė, su kuria galima rašyti aiškesnį ir konkretesnį kodą. Tas dažniausiai patinka Ruby programuotojams. -- [TypeScript](http://www.typescriptlang.org/) pagrindinis tikslas yra įvesti statinį tipizavimą. Tas palengvina sudėtingų sistemų programavimą. Sukurtas Microsft. +- [CoffeeScript](http://coffeescript.org/) yra "syntactic sugar" JavaScript. Trumpesnė sintaksė, su kuria galima rašyti aiškesnį ir konkretesnį kodą. Tai dažniausiai patinka Ruby programuotojams. +- [TypeScript](http://www.typescriptlang.org/) pagrindinis tikslas yra įvesti statinį tipizavimą. Tai palengvina sudėtingų sistemų programavimą. Sukurtas Microsoft. - [Flow](http://flow.org/) taip pat turi statinį tipizavimą, bet kiek kitokiu būdu. Sukurtas Facebook. - [Dart](https://www.dartlang.org/) yra atskira kalba, kuri turi savo paties variklį, kuris veikia ne naršyklėse (pvz. mobiliose aplikacijose), bet taip pat gali būti transpiliuotas į Javascriptą. Sukurtas Google. -Yra ir daugiaų pavyzdžių. Tačiau, netgi jeigu mes naudojame kažkurią iš transpiliuojamų kalbų, suprasti JavaScript'ą yra ne mažiau svarbu. +Yra ir daugiau pavyzdžių. Tačiau, netgi jeigu mes naudojame kažkurią iš transpiliuojamų kalbų, suprasti JavaScript yra ne mažiau svarbu. -## Reziumė +## Santrauka -- JavaScript'as iš pat pradžių buvo sukurtas kaip kalba, veikianti naršyklėje, bet dabar turi ir daugiau aplinkų, kuriose gali būti vykdoma. -- Šią dieną JavaScript'as yra unikalus tuo, kad tai labiausiai paplitusi kalba naršyklei, turinti pilną integraciją su HTML/CSS. -- Yra daug kalbų, kurios gali būti "transipliuotos" į JavaScript'ą ir turi papildomų funkcijų. Rekomenduojama į jas bent jau trumpai pažvelgti po to, kaip išmoksti JavaScript'ą. +- JavaScript iš pat pradžių buvo sukurtas kaip kalba, veikianti naršyklėje, bet dabar turi ir daugiau aplinkų, kuriose gali būti vykdoma. +- Šią dieną JavaScript yra unikali tuo, kad tai labiausiai paplitusi kalba naršyklei, turinti pilną integraciją su HTML/CSS. +- Yra daug kalbų, kurios gali būti konvertuojamos į JavaScript ir turi papildomų funkcijų. Rekomenduojame į jas bent jau trumpai pažvelgti po to, kaip išmoksite JavaScript. diff --git a/1-js/01-getting-started/2-manuals-specifications/article.md b/1-js/01-getting-started/2-manuals-specifications/article.md index 15b6894a9..cd651d63a 100644 --- a/1-js/01-getting-started/2-manuals-specifications/article.md +++ b/1-js/01-getting-started/2-manuals-specifications/article.md @@ -1,41 +1,41 @@ -# Manualai ir specifikacijos +# Vadovai ir specifikacija -Ši knyga yra *tutorialas*. Jo tikslas - padėti palaipsniui išmokti kalbą. Tačiau kuomet išmoksti basic'us, prireikia kitų resursų. +Ši knyga yra *pamokų formato*. Jos tikslas - padėti palaipsniui išmokti kalbą. Tačiau kuomet išmoksti pagrindus, prireikia kitų resursų. ## Specifikacija -[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) turi pačią nuodugniausią, detalią ir formalią informaciją apie JavaScript'ą. Iš esmės, ši specifikacija apibrėžia pačią kalbą. +[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) turi pačią nuodugniausią, detalią ir formalią informaciją apie JavaScript. Iš esmės, ši specifikacija apibrėžia pačią kalbą. -Tačiau iš šios specifikacijos mokytis iš pat pradžių yra ganėtinai sunku, nes informacija yra labai formali. Taip, kad jeigu reikia pačios tiksliausios informacijos apie kalbą, specifikacija yra puikus resursas. Tačiau vargu, ar to prireiks kiekvieną dieną. +Tačiau iš šios specifikacijos mokytis iš pat pradžių yra gana sunku, nes informacija labai formali. Jeigu reikia pačios tiksliausios informacijos apie kalbą, specifikacija yra puikus šaltinis. Tačiau vargu, ar to prireiks kiekvieną dieną. -Nauja specifikacijos versija yra išleidžiama kasmet. Tarp šitų releas'ų, juodraštį (draft'ą) galima rasti . +Kasmet yra išleidžiama nauja specifikacijos versija. Tarp šitų išleidimų, galima rasti juodraštį (ang. "draft") čia . -Perskaityti apie naujausius features, įskaitant ir tuos, kurie yra "beveik standartas" (dar vadinama "stage 3") galima rasti . +Galite perskaityti apie naujausias savybes, įskaitant ir tas, kurios yra "beveik standartas" (dar vadinamas "stage 3") galima rasti . -Taip pat, jeigu norima programuoti naršyklei, tam yra kita specifikacija, kurią gali rasti [antroje](info:browser-environment) tutorial'o dalyje. +Taip pat, jeigu norite programuoti naršyklei, tam yra kita specifikacija, kurią gali rasti [antroje](info:browser-environment) pamokų dalyje. -## Manualai -- **MDN (Mozilla) JavaScript Reference** yra manualas su pavyzdžiais ir kita informacija. Tinka, jeigu reikia detalios informacijos apie konkrečias kalbos funkcijas, metodus, ir pan. +## Vadovai +- **MDN (Mozilla) JavaScript Reference** yra vadovas su pavyzdžiais ir kita informacija. Tinka, jeigu reikia detalios informacijos apie konkrečias kalbos funkcijas, metodus, ir pan. - Manualą galima rasti . + Vadovą galima rasti . - Tačiau, dažniausiai geriausia tiesiog ieškoti informacijos internete. Verta tiesiog naudoti "MDN [apibrėžimas]" užklausoje, pavyzdžiui tam, kad rasti informacijos apie `parseInt` funkciją. + Tačiau, dažniausiai geriausia tiesiog ieškoti informacijos internete. Verta tiesiog naudoti "MDN [apibrėžimas]" užklausoje, pavyzdžiui tam, kad rastumėte informacijos apie `parseInt` funkciją. -- **MSDN** - Microsoft'o manualas, turintis daug informacijos, įskaitant JavaScript'ą (dažnai vadinamas JScript). Jeigu reikia kažko konkretaus Internet Explorer'iui, geriau eiti čia: . +- **MSDN** - Microsoft vadovas, turintis daug informacijos, įskaitant JavaScript (dažnai vadinamas JScript). Jeigu reikia kažko konkretaus skirto Internet Explorer, geriau eiti čia: . Taip pat, galima naudoti paiešką internete su frazėmis, tokiomis kaip "RegExp MSDN" arba "RegExp MSDN jscript". -## Suderinamumo (compatibility) lentelės +## Suderinamumo (ang "compatibility") lentelės -JavaScript yra nuolatos tobulinama kalba, todėl nauji features atsiranda reguliariai. +JavaScript yra nuolatos tobulinama kalba, todėl naujos savybės atsiranda reguliariai. -Pamatyti, ar šiuos features palaiko konkrečios naršyklės ar kiti varikliai, galima čia: +Pamatyti, ar šias savybes palaiko konkrečios naršyklės ar kiti varikliai, galima čia: -- - kiekvieno feature suderinamumo lentelės. T.y. kad pamatyti kurie varikliai palaiko modernias kriptografijos funkcijas: . -- - lentelė su kalbos features ir varikliais, kurie palaiko/nepalaiko šiuos features +- - kiekvienos savybės suderinamumo lentelės. T.y. kad pamatyti kurie varikliai palaiko modernias kriptografijos funkcijas: . +- - lentelė su kalbos savybe ir varikliais, kurie palaiko/nepalaiko šias savybes. -Visi šie resursai yra naudingi realiam pasaulyje, nes jie turi svarbios informacijos apie kalbą, suderinamumą ir pan +Visi šie šaltiniai yra naudingi realiame pasaulyje, nes jie turi svarbios informacijos apie kalbą, suderinamumą ir pan. -Prisimink juos tiems atvejams, kai reikės detalios informacijos apie konkretų feature. +Prisimink juos tiems atvejams, kai reikės detalios informacijos apie konkrečią savybę. diff --git a/1-js/01-getting-started/3-code-editors/article.md b/1-js/01-getting-started/3-code-editors/article.md index 427cdc63b..dc3022a03 100644 --- a/1-js/01-getting-started/3-code-editors/article.md +++ b/1-js/01-getting-started/3-code-editors/article.md @@ -1,45 +1,45 @@ -# Kodo editoriai +# Kodo redaktoriai -Kodo editorius yra vieta, kur programuotojai praleidžia didžiają dalį laiko. +Kodo redaktorius (ang. "code editor") yra vieta, kur programuotojai praleidžia didžiają dalį laiko. -Yra dviejų tipų editoriai: IDE ir lightweight editoriai. Dauguma žmonių naudoja po viena abiejų tipų editorių. +Yra dviejų tipų redaktoriai: integruotos kūrimo aplinkos (ang. IDE) ir lengvasvoriai (ang. "lightweight") redaktoriai. Dauguma žmonių naudoja po viena abiejų tipų redaktorių. -## IDE -Terminas [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) nusako galingą editorių su daug galimybių, kurios dažnai operuoja "visam projektui". Kaip ir nusako pavadinimas - tai ne tik editorius, bet ir visa "developinimo aplinka". +## Integruota Kūrimo Aplinka (IDE) +Terminas [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) reiškia galingą redaktorių su daug galimybių, kurios dažnai veikia "visam projektui". Kaip ir sufleruoja pavadinimas - tai ne tik eredaktorius, bet tuo pačiu ir visa "programavimo aplinka". -IDE pakrauną visą projektą (kuris gali turėti daug failų), leidžia naviguoti tarp failų, duoda autocompletion, kuris galioja visam projektui (ne tik vienam failui) ir integruoja versijavimo sistemą (pvz. [git](https://git-scm.com/)), testavimo aplinką ir kitus "projekto lygio" dalykėlius. +IDE įkelia visą projektą (kuris gali turėti daug failų), leidžia naviguoti tarp failų, suteikia automatinį užbaigimą (ang. "autocompletion"), kuris galioja visam projektui (ne tik vienam failui) ir integruoja versijos valdymo (ang "version control") sistemą (pvz. [git](https://git-scm.com/)), testavimo aplinką ir kitus "projekto lygio" dalykus. -Jeigu dar nepasirinkai IDE, pamąstyk apie šiuos: +Jeigu dar neišsirinkote IDE, pamąstykite apie šiuos: -- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free). -- [WebStorm](http://www.jetbrains.com/webstorm/) (cross-platform, paid). +- [Visual Studio Code](https://code.visualstudio.com/) (daugiaplatformis, nemokamas). +- [WebStorm](http://www.jetbrains.com/webstorm/) (daugiaplatformis, mokamas). -Windows'am taip pat yra "Visual Studio", tačiau nereiktų jo maišyt su "Visual Studio Code". "Visual Studio" yra mokamas ir tik Windows'am skirtas editorius, kuris puikiai derinasi su .NET platforma. Jis taip pat tinka ir JavaScript'ui. yra ir nemokama versija [Visual Studio Community](https://www.visualstudio.com/vs/community/). +Windows taip pat yra "Visual Studio", tačiau nereiktų jo maišyt su "Visual Studio Code". "Visual Studio" yra mokamas ir tik Windows skirtas redaktorius, kuris puikiai derinasi su .NET platforma. Jis taip pat tinka ir JavaScript. yra ir nemokama versija [Visual Studio Community](https://www.visualstudio.com/vs/community/). -Dauguma IDE yra mokami, tačiau turi trial periodą. Jų kaina dažniausiai pakenčiama, atsižvelgus į programuotojų atlyginimus, tad tiesiog išsirink tokį, kuris atrodo palankiausiai. +Dauguma IDE yra mokami, tačiau turi bandomąjį periodą. Jų kaina dažniausiai pakenčiama, atsižvelgiant į programuotojų atlyginimus, tad tiesiog išsirink tokį, kuris atrodo patogiausiai. -## Lightweight editoriai +## Lengvasvoriai redaktoriai -"Lightweight editoriai" yra ne tokie galingi kaip IDE, bet jie yra greiti, elegantiški ir paprasti. +"Lightweight editors" yra ne tokie galingi kaip IDE, bet jie yra greiti, elegantiški ir paprasti. -Jie pagrinde naudojami greitai atidaryti ir pakoreguoti failą. +Jie dažniausiai naudojami greitai atidaryti ir pakoreguoti failą. -Pagrindinis skirtumas tarp "ligthweight editoriaus" ir "IDE" yra tas, kad IDE veikia projekto lygmeny, todėl pačioj pradžioj jis pakrauna daug daugiau informacijos, analizuoja projekto struktūrą, jei to reikia, ir pan. Lightweight editorius yra daug greitesnis, jeigu mums tereikia pakeisti vieną failą. +Pagrindinis skirtumas tarp "ligthweight editor" ir "IDE" yra tas, kad IDE veikia projekto lygmeniu, todėl pačioj pradžioj jis pakrauna daug daugiau informacijos, analizuoja projekto struktūrą, nei to reikia, ir pan. Lengvascoris redaktorius yra daug greitesnis, jeigu mums tereikia pakeisti vieną failą. -Praktikoj, lightweight editoriai turi daug pluginų, įskaitant direktorijos lygmenys sintaksės analyzerius, autocompleterius, tad šitoj vietoj nėra griežtų ribų tarp ligthweight editoriaus ir IDE. +Praktikoj, lengvasvoriai redaktoriai turi daug papildymų (ang. "plugin"), įskaitant direktorijos lygmeny sintaksės analizatorius, automatinio užbaigimo papildymus, tad šitoj vietoj nėra griežtų ribų tarp lengvasvorio redaktoriaus ir IDE. -Šios opcijos vertos dėmesio: +Šie pasirinkimai verti dėmesio: -- [Atom](https://atom.io/) (cross-platform, free). -- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free). -- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware). -- [Notepad++](https://notepad-plus-plus.org/) (Windows, free). -- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) yra labai cool, jeigu moki jais naudotis. +- [Atom](https://atom.io/) (daugiaplatformis, nemokamas). +- [Visual Studio Code](https://code.visualstudio.com/) (daugiaplatformis, nemokamas). +- [Sublime Text](http://www.sublimetext.com) (daugiaplatformis, laikinai nemokamas, ang. "shareware"). +- [Notepad++](https://notepad-plus-plus.org/) (Windows, nemokamas). +- [Vim](http://www.vim.org/) ir [Emacs](https://www.gnu.org/software/emacs/) yra labai puikūs, jeigu moki jais naudotis. ## Nesiginčykime -Editoriai, kurie buvo paminėti šioj pamokoj yra tie, kuriuos aš ir mano draugai, kuriuos laikau kietais programuotojais, naudojame ilgą laiką ir kurie tenkina mūsų poreikius. +Redaktoriai, kurie buvo paminėti šioje pamokoje yra tie, kuriuos aš ir mano draugai, kuriuos laikau kietais programuotojais, naudojame ilgą laiką ir kurie tenkina mūsų poreikius. -Mūsų dideliam pasaulyje yra kitų puikių editorių. Tiesiog pasirink tokį, kuris tau labiausiai patinka. +Mūsų dideliame pasaulyje yra kitų puikių redaktorių. Tiesiog pasirink tokį, kuris tau labiausiai patinka. -Editoriaus pasirinkimas, kaip ir bet kokio kito įrankio, yra individualus ir priklauso nuo projektų bei kitų, dažnai subjektyvių kriterijų. +Redaktoriaus pasirinkimas, kaip ir bet kokio kito įrankio, yra individualus ir priklauso nuo projektų bei kitų, dažnai subjektyvių kriterijų. diff --git a/1-js/01-getting-started/4-devtools/article.md b/1-js/01-getting-started/4-devtools/article.md index b83fbcb94..690fa5661 100644 --- a/1-js/01-getting-started/4-devtools/article.md +++ b/1-js/01-getting-started/4-devtools/article.md @@ -1,54 +1,54 @@ -# Developer console +# Programuotojo konsolė -Kode lengva palikti errorų. Ko gero, tau teks sukelti errorų... Juokauju, tau *tikrai* teks sukelti errorų, nebent esi [robotas](https://en.wikipedia.org/wiki/Bender_(Futurama)). +Kodėl lengva palikti klaidų. Ko gero, tau teks sukelti klaidų... Juokauju, tau *tikrai* teks sukelti klaidų, nebent esi [robotas](https://en.wikipedia.org/wiki/Bender_(Futurama)). -Tačiau naršyklėje, useriai by default nemato errorų. Todėl jeigu skripte kažkas veikia ne taip, kaip turėtų, mes to nepamatysim ir negalėsim pataisyt. +Tačiau naršyklėje, vartotojai nemato klaidų. Todėl jeigu skripte kažkas veikia ne taip, kaip turėtų, mes to nepamatysime ir negalėsime pataisyt. -Tam, kad pamatyti errorus ir gauti daug kitos naudingos informacijos apie skriptus, "developer tools" yra integruoti pačiose naršyklėse. +Tam, kad rastume klaidas ir gautume daug kitos naudingos informacijos apie skriptus, naudojame programuotojų įrankius (ang. "developer tools") integruotus pačiose naršyklėse. -Dauguma programuotojų naudojasi Chrome arba Firefox, nes šios naršyklės turi geriausius developer tools'us. Kitos naršklės taip pat turi developer tools'us, kartais su įdomiais feature'sais, tačiau dažniausiai bando "pasivyti" Chrome arba Firefox. Todėl dauguma programuotojų turi "mėgstamiausią" naršyklę ir įsijungią kitą naršyklę, jeigu problema yra specifinė kažkokiai konkrečiai naršyklei. +Dauguma programuotojų naudojasi Chrome arba Firefox, nes šios naršyklės turi geriausius įrankius. Kitos naršklės taip pat turi programuotojų įrankius, kartais su įdomiomis savybėmis, tačiau jie dažniausiai tik bando "pasivyti" Chrome arba Firefox. Todėl dauguma programuotojų turi "mėgstamiausią" naršyklę ir naudoja kitą, tik tada kai problema yra specifinė kažkokiai konkrečiai naršyklei. -Developer tools'ai turi daug feature'sų. Pradžiai, mes išmoksim kaip juos atidaryti, pažvelgti į error'us ir paleisti JavaScript komandas. +Programuotojų įrankiai turi daug savybių. Pradžiai, mes išmoksime juos atidaryti, pažvelgti į klaidas ir paleisti JavaScript komandas. ## Google Chrome Atidaryk puslapį [bug.html](bug.html). -Šio puslapio JavaScript kode yra error'as. Jis paslėptas nuo "parpastų" žmonių, tad atidarykime developer tools'us. +Šio puslapio JavaScript kode yra klaida. Ji paslėpta nuo paprastų lankytojų. Atidarykime programuotojų įrankius. -Spausk `key:F12` arba, jeigu naudoji Mac, `key:Cmd+Opt+J`. +Spausk `key:F12` arba, jeigu naudoji Mac, `key:Cmd+Opt+I`. -Developer tools'ai standartiškai atidarys Console tab'ą. +Programuotojų įrankiai standartiškai atidarys konsolės langą. -Turėtų atrodyt kažkas panašaus į tai: +Turėtų atrodyt panašiai į tai: ![chrome](chrome.png) Konkretus vaizdas priklauso nuo Chrome versijos, kurią naudoji. Kartais atsiranda pakeitimų, bet visgi vaizdas turėtų būti panašus. -- Čia mes galim pamatyt raudoną error message. Šiuo atveju skriptas turi nežinomą "lalala" komandą. -- Dešinėje yra clickable link'as į `bug.html:12` su skaičiumi eilutės, kurioje yra error'as. +- Čia mes galim pamatyti raudoną klaidos žinutę. Šiuo atveju skriptas turi nežinomą "lalala" komandą. +- Dešinėje yra aktyvi nuoroda į `bug.html:12` su skaičiumi eilutės, kurioje yra klaida. -Žemiau error message'o yra mėlynas `>` simbolis. Jis parodo "command line", kuriame mes galime rašyti JavaScript komandas. Spausk `key:Enter` kad jas paleisti (`key:Shift+Enter` kad rašyti komandas per daugiau nei vieną eilutę). +Žemiau klaidos žinutės yra mėlynas `>` simbolis. Jis parodo komandų eilutę (ang. "command line"), kurioje mes galime rašyti JavaScript komandas. Spausk `key:Enter` kad jas paleisti (`key:Shift+Enter` kad rašyti komandas per daugiau nei vieną eilutę). -Dabar mes galime matyti error'us. Kaip pradžiai, to pakanka. Vėliau mes grįšim į developer tools'us ir kalbėsim apie debugginimą chapteryje . +Dabar mes galime matyti klaidas. Pradžiai, to pakanka. Vėliau mes grįšime į programuotojų įrankius ir kalbėsime apie klaidų taisymą skyriuje . ## Firefox, Edge ir kiti -Dauguma kitų naršyklių naudoja `key:F12` developer tools'ų atidarymui. +Dauguma kitų naršyklių naudoja `key:F12` programuotojo įrankių atidarymui. -Jų išvaizda gan panaši. Kai išmoksti vieną (gali pradėti nuo Chrome), gali greitai pradėti naudotis kita. +Jų išvaizda gana panaši. Kai išmoksti vieną (gali pradėti nuo Chrome), gali greitai pradėti naudotis kitais. ## Safari -Safari (Mac naršyklė, neveikia Windows/Linux) yra šiek tiek unikali. Iš pradžių mums reikia enablinti "Developer menu". +Safari (Mac naršyklė, neveikia Windows/Linux) yra šiek tiek unikali. Iš pradžių mums reikia įgalinti "Programuotojo Meniu" (ang. "Developer menu"). -Atidaryk Preferences ir eik į "Advanced". Apačioj bus checkbox'as: +Atidaryk Nuostatas (ang. "Preferences") ir eik į "Pažangi" (ang. "Advanced"). Apačioj bus langelis (ang. "checkbox"): ![safari](safari.png) -Dabar `key:Cmd+Opt+C` įjungs konsolę. Taip pat turėk omeny, kad naujas item'as "Develop" atsirado viršutiniam meniu. Jame yra daug komandų ir nustatymų. +Dabar `key:Cmd+Opt+C` įjungs konsolę. Taip pat turėk omeny, kad naujas pasirinkimas "Programuoti" (ang. "Develop") atsirado viršutiniame meniu. Jame yra daug komandų ir nustatymų. ```smart header="Kelių eilučių komandos" Dažniausiai, jeigu konsolėje parašome vieną eilutę kodo ir paspaudžiame `key:Enter`, ji suveikia. @@ -58,7 +58,7 @@ Tam, kad parašyti kelias eilutes, spausk `key:Shift+Enter`. Tokiu būdu mes gal ## Reziumė -- Developer tools'ai leidžia mum pamatyti errorus, paleisti komandas, analizuoti kintamuosiuos ir daugiau. -- Juos paleisti galime su `key:F12` dauguma naršklių Windows'uose. Chrome, jeigu naudojame Mac, reikaluaja `key:Cmd+Opt+J`, Safari: `key:Cmd+Opt+C` (iš pradžių reikia aktyvuoti). +- Programuotojo įrankiai leidžia mums pamatyti klaidas, paleisti komandas, analizuoti kintamuosiuos ir daugiau. +- Juos paleisti galime su `key:F12` dauguma naršklių per Windows. Chrome, jeigu naudojame Mac, reikalauja `key:Cmd+Opt+J`, Safari: `key:Cmd+Opt+C` (iš pradžių reikia aktyvuoti). -Dabar mes turime paruoštą aplinką. Kitoj pamokoj paragausim JavaScript'o. +Dabar jau turime paruoštą aplinką. Kitoj pamokoj paragausime JavaScript. diff --git a/1-js/01-getting-started/4-devtools/bug.html b/1-js/01-getting-started/4-devtools/bug.html index edb02375c..d0266818f 100644 --- a/1-js/01-getting-started/4-devtools/bug.html +++ b/1-js/01-getting-started/4-devtools/bug.html @@ -7,11 +7,11 @@ - There is an error in the script on this page. + Šio puslapio skriptuose yra klaida. - \ No newline at end of file + diff --git a/1-js/01-getting-started/index.md b/1-js/01-getting-started/index.md index b327c7860..109cbce28 100644 --- a/1-js/01-getting-started/index.md +++ b/1-js/01-getting-started/index.md @@ -1,3 +1,3 @@ -# An introduction +# Įžanga -About the JavaScript language and the environment to develop with it. +Apie JavaScript kalbą ir aplinką programavimui su ja. diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md index 9249e1c84..b7cbac59b 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md @@ -1,7 +1,7 @@ -In the code below, each line corresponds to the item in the task list. +Pažvelkite į kodą žemiau, kiekviena eilutė atitinka punktą iš užduočių sąrašo. ```js run -let admin, name; // can declare two variables at once +let admin, name; // galima deklaruoti du kintamuosius tuo pačiu metu name = "John"; diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/task.md b/1-js/02-first-steps/04-variables/1-hello-variables/task.md index 84f009e8c..5d4150962 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/task.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/task.md @@ -2,9 +2,9 @@ importance: 2 --- -# Working with variables +# Darbas su kintamaisiais -1. Declare two variables: `admin` and `name`. -2. Assign the value `"John"` to `name`. -3. Copy the value from `name` to `admin`. -4. Show the value of `admin` using `alert` (must output "John"). +1. Deklaruokite du kintamuosius: `admin` ir `name`. +2. Priskirkite vertę `"John"` kintamajam `name`. +3. Nukopijuokite vertę iš `name` į `admin`. +4. Parodykite `admin` vertę, naudodami `alert` (turi grąžinti "John"). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md index d56e54d28..7c64f263a 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md @@ -1,21 +1,21 @@ -## The variable for our planet +## Kintamasis mūsų planetai -That's simple: +Tai labai paprasta: ```js -let ourPlanetName = "Earth"; +let ourPlanetName = "Žemė"; ``` -Note, we could use a shorter name `planet`, but it might be not obvious what planet it refers to. It's nice to be more verbose. At least until the variable isNotTooLong. +Atkreipkite dėmesį, kad galėjome naudoti trumpesnį pavadinimą `planet`, bet tada nebūtų aišku apie kurią planetą eina kalba. Šiuo atveju nieko tokio daugiažoždiauti. Bent jau kol kintamasis nėraPerIlgas. -## The name of the current visitor +## Esamo lankytojo vardas ```js let currentUserName = "John"; ``` -Again, we could shorten that to `userName` if we know for sure that the user is current. +Vėlgi, galėjome sutrumpinti iki `userName`, jeigu konkrečiai žinome, kad tas lankytojas yra esamas. -Modern editors and autocomplete make long variable names easy to write. Don't save on them. A name with 3 words in it is fine. +Modernūs redaktoriai ir automatinis užbaigimas padeda rašyti ilgus kintamųjų pavadinimus. Netaupykite dėl jų. Pavadinimas su trimis žodžiais yra visiškai tinkamas variantas. -And if your editor does not have proper autocompletion, get [a new one](/code-editors). +O jeigu jūsų redaktorius neturi tinkamo automatinio užbaigimo funkcijos, įsigykite [naują](/code-editors). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/task.md b/1-js/02-first-steps/04-variables/2-declare-variables/task.md index f364badf4..add81b92a 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/task.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/task.md @@ -2,7 +2,7 @@ importance: 3 --- -# Giving the right name +# Tinkamo vardo davimas -1. Create a variable with the name of our planet. How would you name such a variable? -2. Create a variable to store the name of a current visitor to a website. How would you name that variable? +1. Sukurkite kintamąjį su mūsų planetos vardu. Kaip pavadintumėte patį kintamąjį? +2. Sukurkite kintamąjį skirtą išsaugoti vardą lankytojo, kuris šiuo metu lankosi puslapyje. Kaip pavadintumėte patį kintamąjį? diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index acd643fde..a9a92a6cd 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -1,5 +1,5 @@ -We generally use upper case for constants that are "hard-coded". Or, in other words, when the value is known prior to execution and directly written into the code. +Mes dažniausiai naudojame didžiąsias raides konstantoms, kurios yra iš anksto užprogramuotos (angliškai vadinamos "hard-coded"). Arba kitaip sakant kai vertė yra žinoma prieš įvykdymą ir yra tiesiai įrašyta į kodą. -In this code, `birthday` is exactly like that. So we could use the upper case for it. +Šis kodas, `birthday` yra būtent toks. Tad mes galime jam naudoti didžiąsias raides. -In contrast, `age` is evaluated in run-time. Today we have one age, a year after we'll have another one. It is constant in a sense that it does not change through the code execution. But it is a bit "less of a constant" than `birthday`: it is calculated, so we should keep the lower case for it. +Tačiau priešingai yra su `age`, kuris yra įvertinamas vykdymo metu. Šiandien mes turime vienokį amžių, bet po metų jis jau bus kitoks. Jis yra konstanta tik dėl to, kad jis nesikeičia įvykdant kodą. Bet jis yra kiek "mažiau pastovus" negu `birthday`: jis yra suskaičiuojamas, dėl tos priežasties turėtume jam palikti mažąsias raides. diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md index 5fd18f90a..1262e8157 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md @@ -2,9 +2,9 @@ importance: 4 --- -# Uppercase const? +# const didžiosiomis raidėmis? -Examine the following code: +Peržiūrėkite sekantį kodą: ```js const birthday = '18.04.1982'; @@ -12,13 +12,13 @@ const birthday = '18.04.1982'; const age = someCode(birthday); ``` -Here we have a constant `birthday` date and the `age` is calculated from `birthday` with the help of some code (it is not provided for shortness, and because details don't matter here). +Mes turime konstantą `birthday` data ir amžius `age` yra paskaičiuojame pagal `birthday` tam tikro kodo pagalba (jis čia nepateiktas dėl glaustumo ir dėl to, kad tai nėra svarbu užduočiai). -Would it be right to use upper case for `birthday`? For `age`? Or even for both? +Ar būtų gerai naudoti didžiąsias raided `birthday`? O kaip dėl `age`? O galbūt netgi abiems? ```js -const BIRTHDAY = '18.04.1982'; // make uppercase? +const BIRTHDAY = '18.04.1982'; // perrašyti didžiosiomis raidėmis? -const AGE = someCode(BIRTHDAY); // make uppercase? +const AGE = someCode(BIRTHDAY); // perrašyti didžiosiomis raidėmis? ``` diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index 6d680b3b0..c531c60d6 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -1,260 +1,260 @@ -# Variables +# Kintamieji -Most of the time, a JavaScript application needs to work with information. Here are two examples: -1. An online shop -- the information might include goods being sold and a shopping cart. -2. A chat application -- the information might include users, messages, and much more. +Dažniausiai JavaScript paraiška dirba su informacija. Štai du pavyzdžiai: +1. Internetinė parduotuvė -- informacija gali apimti parduodamas prekes ir pirkimo krepšelį. +2. Pokalbių programėlė -- informacija gali apimti vartotojus, žinutes ir daug daugiau. -Variables are used to store this information. +Kintamieji (ang. variables) yra naudojami tam, kad kauptų šią informaciją. -## A variable +## Kintamasis -A [variable](https://en.wikipedia.org/wiki/Variable_(computer_science)) is a "named storage" for data. We can use variables to store goodies, visitors, and other data. +[Kintamasis](https://en.wikipedia.org/wiki/Variable_(computer_science)) yra "įvardinta saugykla" duomenims. Mes galime naudoti kintamuosius, kad kauptume informacines gėrybes, lankytojus ir kitus duomenis. -To create a variable in JavaScript, use the `let` keyword. +Norėdami sukurti kintamąjį su JavaScript, naudokite `let` raktinį žodį (ang. "keyword"). -The statement below creates (in other words: *declares*) a variable with the name "message": +Žemiau esantis pareiškimas sukuria (kitais žodžiais: *deklaruoja*, ang.*declares*) kintamąjį su pavadinimu "message": ```js let message; ``` -Now, we can put some data into it by using the assignment operator `=`: +Dabar į jį galime patalpinti duomenis naudodami užduoties operatorių `=`: ```js let message; *!* -message = 'Hello'; // store the string +message = 'Labas'; // patalpinama eilutė */!* ``` -The string is now saved into the memory area associated with the variable. We can access it using the variable name: +Dabar eilutė yra išsaugota į atminties sritį susijusią su kintamuoju. Mes galime gauti prieigą naudodami kintamojo pavadinimą. ```js run let message; -message = 'Hello!'; +message = 'Labas!'; *!* -alert(message); // shows the variable content +alert(message); // parodo kintamojo turinį */!* ``` -To be concise, we can combine the variable declaration and assignment into a single line: +Dėl glaustumo galime sujungti kintamojo deklaraciją ir užduotį į vieną eilę: ```js run -let message = 'Hello!'; // define the variable and assign the value +let message = 'Labas!'; // apibrėžti kintamąjį ir priskirti jam vertę -alert(message); // Hello! +alert(message); // Labas! ``` -We can also declare multiple variables in one line: +Mes taip pat galime deklaruoti kelis kintamuosius vienoje eilėje: ```js no-beautify -let user = 'John', age = 25, message = 'Hello'; +let user = 'John', age = 25, message = 'Labas'; ``` -That might seem shorter, but we don't recommend it. For the sake of better readability, please use a single line per variable. +Taip atrodo trumpiau, bet iš tikrųjų nerekomenduojame šito daryti. Tam, kad būtų lengviau perskaityti kodą, rekomenduojame naudoti atskirą eilę kiekvienam kintamajam. -The multiline variant is a bit longer, but easier to read: +Kelių eilių variantas ilgesnis, bet jį lengviau perskaityti: ```js let user = 'John'; let age = 25; -let message = 'Hello'; +let message = 'Labas'; ``` -Some people also define multiple variables in this multiline style: +Kai kurie žmonės apibrėžia kelis kintamuosius tokiu kelių eilių stiliumi: ```js no-beautify let user = 'John', age = 25, - message = 'Hello'; + message = 'Labas'; ``` -...Or even in the "comma-first" style: +...Arba netgi "kablelis priekyje" stiliumi: ```js no-beautify let user = 'John' , age = 25 - , message = 'Hello'; + , message = 'Labas'; ``` -Technically, all these variants do the same thing. So, it's a matter of personal taste and aesthetics. +Techniškai, visi šie variantai daro tą patį. Tad tai daugiau asmeninio skonio ir estetikos reikalas. -````smart header="`var` instead of `let`" -In older scripts, you may also find another keyword: `var` instead of `let`: +````smart header="`var` vietoje `let`" +Senesniuose skriptuose galite rasti raktažodį: `var` vietoje `let`: ```js -*!*var*/!* message = 'Hello'; +*!*var*/!* message = 'Labas'; ``` -The `var` keyword is *almost* the same as `let`. It also declares a variable, but in a slightly different, "old-school" way. +Raktažodis `var` yra *beveik* tas pats kaip `let`. Jis taip pat deklaruoja kintamąjį, bet šiek tiek kitokiu, "senoviniu" būdu. -There are subtle differences between `let` and `var`, but they do not matter for us yet. We'll cover them in detail in the chapter . +Yra subtilūs skirtumai tarp `let` ir `var`, bet kol kas jie mums nėra svarbūs. Mes apie juos kalbėsime detaliau skyriuje . ```` -## A real-life analogy +## Tikro gyvenimo analogija -We can easily grasp the concept of a "variable" if we imagine it as a "box" for data, with a uniquely-named sticker on it. +Tam kad būtų lengviau suprasti "kintamojo" sąvoką, įsivaizduokime jį kaip "dėžę" skirtą sudėti duomenims, ant kurios priklijuotas unikaliai pavadintas lipdukas. -For instance, the variable `message` can be imagined as a box labeled `"message"` with the value `"Hello!"` in it: +Pavyzdžiui kintamąjį `message` galime įsivaizduoti kaip dėžę su etikete `"message"`, kurios viduje yra patalpinta vertė `"Labas!"`: ![](variable.svg) -We can put any value in the box. +Mes galime į dėžę įdėti bet kokią vertę. -We can also change it as many times as we want: +Mes taip pat galime ją pakeisti kiek norime kartų: ```js run let message; -message = 'Hello!'; +message = 'Labas!'; -message = 'World!'; // value changed +message = 'Pasauli!'; // vertė pakeista alert(message); ``` -When the value is changed, the old data is removed from the variable: +Kai vertė yra pakeičiama, seni duomenys panaikinami iš kintamojo: ![](variable-change.svg) -We can also declare two variables and copy data from one into the other. +Mes taip pat galime deklaruoti du kintamuosius ir nukopijuoti duomenis iš vieno į kitą. ```js run -let hello = 'Hello world!'; +let hello = 'Labas pasauli!'; let message; *!* -// copy 'Hello world' from hello into message +// nukopijuoti 'Labas pasauli' iš hello į message message = hello; */!* -// now two variables hold the same data -alert(hello); // Hello world! -alert(message); // Hello world! +// dabar abu kintamieji savyje laiko tuos pačius duomenis +alert(hello); // Labas pasauli! +alert(message); // Labas pasauli! ``` -```smart header="Functional languages" -It's interesting to note that there exist [functional](https://en.wikipedia.org/wiki/Functional_programming) programming languages, like [Scala](http://www.scala-lang.org/) or [Erlang](http://www.erlang.org/) that forbid changing variable values. +```smart header="Funkcinės kalbos" +Yra įdomu pastebėti, kad egzistuoja [funkcinės](https://en.wikipedia.org/wiki/Functional_programming) programavimo kalbos, tokios kaip [Scala](http://www.scala-lang.org/) arba [Erlang](http://www.erlang.org/), kurios draudžia keisti kintamųjų vertes. -In such languages, once the value is stored "in the box", it's there forever. If we need to store something else, the language forces us to create a new box (declare a new variable). We can't reuse the old one. +Tokiose kalbose, kai vertė yra patalpinama "į dėžę", ji ten ir pasilieka amžiams. Jeigu norime patalpinti kažką kito, kalba mus priverčia sukurti naują dėžę (deklaruoti naują kintamąjį). Mes nebegalime dar kartą panaudoti senojo. -Though it may seem a little odd at first sight, these languages are quite capable of serious development. More than that, there are areas like parallel computations where this limitation confers certain benefits. Studying such a language (even if you're not planning to use it soon) is recommended to broaden the mind. +Nors tai atrodo keistai iš pirmo žvilgsnio, tačiau šios kalbos yra gana gabios rimtame programų kūrime. Dar daugiau, yra tam tikrų sričių kaip lygiagretusis skaičiavimas (ang. "parallel computations") kur toks apribojimas suteikia tam tikros naudos. Studijuoti tokią kalbą (net jeigu neplanuojate jos greitu laiku naudoti) yra rekomenduotina, kad praplėstumėte savo mąstymą. ``` -## Variable naming [#variable-naming] +## Kintamųjų įvardinimas [#variable-naming] -There are two limitations on variable names in JavaScript: +Yra du apribojimai kintamųjų pavadinimams JavaScript: -1. The name must contain only letters, digits, or the symbols `$` and `_`. -2. The first character must not be a digit. +1. Pavadinimas gali būti sudarytas tik iš raidžių, skaitmenų arba simbolių `$` ir `_`. +2. Pirmas ženklas negali būti skaičius. -Examples of valid names: +Tinkamų pavadinimų pavyzdžiai: ```js let userName; let test123; ``` -When the name contains multiple words, [camelCase](https://en.wikipedia.org/wiki/CamelCase) is commonly used. That is: words go one after another, each word except first starting with a capital letter: `myVeryLongName`. +Kai pavadinimas susideda iš kelių žodžių, dažniausiai naudojamas [camelCase](https://en.wikipedia.org/wiki/CamelCase) (tiesioginis vertimas - kupranugario atvejis). Tai reiškia: žodžiai seka vienas kitą, kiekvienas žodis išskyrus pirmąjį prasideda iš didžiosios raidės: `manoLabaiIlgasVardas`. -What's interesting -- the dollar sign `'$'` and the underscore `'_'` can also be used in names. They are regular symbols, just like letters, without any special meaning. +Įdomu -- dolerio `'$'` ir pabrėžimo `'_'` ženklai gali būti naudojami pavadinimuose. Jie yra normalūs simboliai, taip pat kaip raidės, be jokios ypatingos reikšmės. -These names are valid: +Šie pavadinimai yra tinkami: ```js run untrusted -let $ = 1; // declared a variable with the name "$" -let _ = 2; // and now a variable with the name "_" +let $ = 1; // deklaruotas kintamasis su pavadinimu "$" +let _ = 2; // o dabar kintamasis su pavadinimu "_" alert($ + _); // 3 ``` -Examples of incorrect variable names: +Pavyzdžiai neteisingų pavadinimų kintamiesiems: ```js no-beautify -let 1a; // cannot start with a digit +let 1a; // negali prasidėti skaičiumi -let my-name; // hyphens '-' aren't allowed in the name +let my-name; // brūkšniai '-' pavadinime neleidžiami ``` -```smart header="Case matters" -Variables named `apple` and `AppLE` are two different variables. +```smart header="Svarbu didžiosios ar mažosios raidės" +Kintamieji su pavadinimais `obuolys` ir `obuoLYS` yra du skirtingi kintamieji. ``` -````smart header="Non-Latin letters are allowed, but not recommended" -It is possible to use any language, including cyrillic letters or even hieroglyphs, like this: +````smart header="Nelotyniškos raidės leidžiamos, bet nerekomenduojamos" +Galima naudoti bet kokią kalbą, net kirilicos raides ar hieroglifus kaip pavyzdyje: ```js let имя = '...'; let 我 = '...'; ``` -Technically, there is no error here, such names are allowed, but there is an international tradition to use English in variable names. Even if we're writing a small script, it may have a long life ahead. People from other countries may need to read it some time. +Techniškai jokios klaidos tame nėra ir tokie pavadinimai yra leistini, tačiau tarptautinė tradicija yra naudoti angliškus kintamųjų pavadinimus. Net jeigu rašome trumpą skriptą, jo gyvenimas gali būti labai ilgas. Kada nors žmonėms iš kitų šalių gali tekti jį perskaityti. ```` -````warn header="Reserved names" -There is a [list of reserved words](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords), which cannot be used as variable names because they are used by the language itself. +````warn header="Rezervuoti pavadinimai" +Yra [rezervuotų žodžių sąrašas](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords), kurių negalima naudoti kaip kintamųjų, nes šie žodžiai yra naudojami pačioje kalboje. -For example: `let`, `class`, `return`, and `function` are reserved. +Pavyzdžiui: `let`, `class`, `return` ir `function` yra rezervuoti. -The code below gives a syntax error: +Kodas apačioje grąžina sintaksės klaidą: ```js run no-beautify -let let = 5; // can't name a variable "let", error! -let return = 5; // also can't name it "return", error! +let let = 5; // negalima kintamojo pavadinti "let", klaida! +let return = 5; // taip pat negalima pavadinti "return", klaida! ``` ```` -````warn header="An assignment without `use strict`" +````warn header="Paskyrimas be `use strict`" -Normally, we need to define a variable before using it. But in the old times, it was technically possible to create a variable by a mere assignment of the value without using `let`. This still works now if we don't put `use strict` in our scripts to maintain compatibility with old scripts. +Dažniausiai, mums reikia apibrėžti kintamąjį prieš jį naudojant. Bet seniau techniškai buvo galima sukurti kintamąjį tiesiog priskiriant jam vertę ir nenaudojant `let`. Tai vis dar suveikia jeigu mūsų skirptuose nenurodome `use strict` skirtą palaikyti suderinamumą su senaisiais skirptais. ```js run no-strict -// note: no "use strict" in this example +// atkreipkite dėmesį: "use strict" nenaudojamas šiame pavyzdyje -num = 5; // the variable "num" is created if it didn't exist +num = 5; // sukuriamas kintamasis "num", jeigu neegzistavo prieš tai alert(num); // 5 ``` -This is a bad practice and would cause an error in strict mode: +Tai yra bloga praktika ir grąžina klaidą griežtame režime (ang. strict mode): ```js "use strict"; *!* -num = 5; // error: num is not defined +num = 5; // klaida: num nėra apibrėžtas */!* ``` ```` -## Constants +## Konstantos -To declare a constant (unchanging) variable, use `const` instead of `let`: +Tam kad deklaruotume konstantą (ang. constant) (pastovų) kintamąjį, naudojame `const` vietoje `let`: ```js const myBirthday = '18.04.1982'; ``` -Variables declared using `const` are called "constants". They cannot be reassigned. An attempt to do so would cause an error: +Kintamieji deklaruoti naudojant `const` yra vadinami "konstantomis". Jie negali būti paskirti iš naujo. Bandymas tai padaryti grąžintų klaidą: ```js run const myBirthday = '18.04.1982'; -myBirthday = '01.01.2001'; // error, can't reassign the constant! +myBirthday = '01.01.2001'; // klaida, negalima priskirti konstantos iš naujo! ``` -When a programmer is sure that a variable will never change, they can declare it with `const` to guarantee and clearly communicate that fact to everyone. +Kai programuotojas yra užtikrintas, kad kintamasis niekada nesikeis, gali deklaruoti jį su `const`, kad garantuotų ir aiškiai praneštų šį faktą ir kitiems. -### Uppercase constants +### Konstantos didžiosiomis raidėmis -There is a widespread practice to use constants as aliases for difficult-to-remember values that are known prior to execution. +Plačiai paplitusi praktika naudoti konstantas kaip kodinius pavadinimus sunkiai įsimenamoms vertėms, kurios yra jau žinomos prieš atlikimą. -Such constants are named using capital letters and underscores. +Tokios konstantos pavadinamos naudojant didžiąsias raides ir pabrėžimo ženklą. -For instance, let's make constants for colors in so-called "web" (hexadecimal) format: +Pavyzdžiui, sukurkime konstantas spalvoms su taip vadinamu internetiniu (šešioliktainiu, ang. hexadecimal) formatu: ```js run const COLOR_RED = "#F00"; @@ -262,69 +262,69 @@ const COLOR_GREEN = "#0F0"; const COLOR_BLUE = "#00F"; const COLOR_ORANGE = "#FF7F00"; -// ...when we need to pick a color +// ...kai mums reikia išsirinkti spalvą let color = COLOR_ORANGE; alert(color); // #FF7F00 ``` -Benefits: +Nauda: -- `COLOR_ORANGE` is much easier to remember than `"#FF7F00"`. -- It is much easier to mistype `"#FF7F00"` than `COLOR_ORANGE`. -- When reading the code, `COLOR_ORANGE` is much more meaningful than `#FF7F00`. +- `COLOR_ORANGE` daug lengviau prisiminti nei `"#FF7F00"`. +- Daug lengviau būtų įvelti klaidų spausdinant klaviatūra `"#FF7F00"` negu `COLOR_ORANGE`. +- Skaitant kodą, `COLOR_ORANGE` turės daugiau prasmės nei `#FF7F00`. -When should we use capitals for a constant and when should we name it normally? Let's make that clear. +Kada turėtume naudoti didžiąsias raides konstantoms ir kada turėtume jas pavadinti normaliu būdu? Išsiaiškinkime. -Being a "constant" just means that a variable's value never changes. But there are constants that are known prior to execution (like a hexadecimal value for red) and there are constants that are *calculated* in run-time, during the execution, but do not change after their initial assignment. +Būti "konstanta" tereiškia, kad to kintamojo vertė niekada nesikeičia. Bet yra tokių konstantų, kurių vertė yra žinoma prieš kodo atlikimą (kaip pavyzdžiui šešioliktainė raudonos spalvos vertė) ir taip pat yra konstantos, kurios yra *išmatuojamos* (ang *calculated*) veikimo metu kol vykdomas kodas, bet nesikeičia po jų pradinio paskyrimo. -For instance: +Pavyzdžiui: ```js -const pageLoadTime = /* time taken by a webpage to load */; +const pageLoadTime = /* kiek laiko užtruko paliesti puslapį */; ``` -The value of `pageLoadTime` is not known prior to the page load, so it's named normally. But it's still a constant because it doesn't change after assignment. +Vertė `pageLoadTime` nebuvo žinoma prieš paleidžiant puslapį, tad pavadinimas užrašytas įprastiniu būdu, bet tai vis dar konstanta, nes ji nesikeičia po paskyrimo. -In other words, capital-named constants are only used as aliases for "hard-coded" values. +Kitais žodžiais, didžiosiomis raidėmis pavadintos konstantos yra naudojamos kaip kodiniai žodžiai išanksto sukoduotoms (ang "hard-coded") vertėms. -## Name things right +## Pavadinkite daiktus teisingai -Talking about variables, there's one more extremely important thing. +Kalbant apie kintamuosius yra dar vienas labai svarbus punktas. -A variable name should have a clean, obvious meaning, describing the data that it stores. +Kintamojo pavadinimas turi turėti švarią, aiškią reikšmę, apibūdinančią duomenis, kuriuos jis saugo. -Variable naming is one of the most important and complex skills in programming. A quick glance at variable names can reveal which code was written by a beginner versus an experienced developer. +Kintamųjų įvardinimas yra viena iš svarbiausių ir sudėtingiausių sugebėjimų programuojant. Žvilgtelėjus į kintamųjų pavadinimus galima nustatyti kurį kodą parašė naujokas, o kurį jau patyręs programuotojas. -In a real project, most of the time is spent modifying and extending an existing code base rather than writing something completely separate from scratch. When we return to some code after doing something else for a while, it's much easier to find information that is well-labeled. Or, in other words, when the variables have good names. +Tikrame projekte, daugiausiai laiko yra skiriama modifikuoti ir išplėsti jau esamą kodą negu rašant kažką visiškai naujo nuo pat pradžių. Kai grįžtame prie kodo po to kai kurį laiką darėme kažką kito, daug lengviau kai randi informaciją su aiškiomis etiketėmis. Arba kitaip tariant, kai kintamieji turi gerus pavadinimus. -Please spend time thinking about the right name for a variable before declaring it. Doing so will repay you handsomely. +Prašau, skirkite laiko sugalvodami kintamajam tinkamą pavadinimą prieš jį deklaruodami. Toks įprotis jums tikrai vėliau atsipirks. -Some good-to-follow rules are: +Kelios sektinos taisyklės: -- Use human-readable names like `userName` or `shoppingCart`. -- Stay away from abbreviations or short names like `a`, `b`, `c`, unless you really know what you're doing. -- Make names maximally descriptive and concise. Examples of bad names are `data` and `value`. Such names say nothing. It's only okay to use them if the context of the code makes it exceptionally obvious which data or value the variable is referencing. -- Agree on terms within your team and in your own mind. If a site visitor is called a "user" then we should name related variables `currentUser` or `newUser` instead of `currentVisitor` or `newManInTown`. +- Naudokite žmogui lengvai perskaitomus pavadinimus, kaip `userName` arba `shoppingCart`. +- Laikykitės atokiau nuo sutrumpinimų arba trumpų pavadinimų kaip `a`, `b`, `c`, nebent tikrai žinote ką darote. +- Pavadinimus kurkite kaip galima labiau apibūdinančius, bet glaustus. Pavyzdžiui blogi pavadinimai yra tokie kaip `data` ir `value`. Tokie pavadinimai nieko nesako. Tinka tik tokiu atveju jeigu kodo turinys yaptingai aiškiai parodo, į kuriuos "data" arba "value" kintamasis nurodo. +- Susitarkite dėl terminų su komanda ir savo mintyse. Jeigu lankytojas puslapyje yra vadinamas "user" tai ir susiję kintamieji turi būti pavadinti `currentUser` arba `newUser` vietoje `currentVisitor` arba `newManInTown`. -Sounds simple? Indeed it is, but creating descriptive and concise variable names in practice is not. Go for it. +Skamba paprastai? Iš tikrųjų taip ir yra, bet praktikoje sukurti apibūdinančius ir tuo pačiu glaustus kintamųjų pavadinimus nėra lengva. Pabandykite. -```smart header="Reuse or create?" -And the last note. There are some lazy programmers who, instead of declaring new variables, tend to reuse existing ones. +```smart header="Panaudoti vėl ar sukurti naują?" +Ir paskutinė pastaba. Yra tingių programuotojų, kurie vietoje to, kad deklaruotų naujus kintamuosius, mėgsta dar kartą panaudoti jau egzistuojančius. -As a result, their variables are like boxes into which people throw different things without changing their stickers. What's inside the box now? Who knows? We need to come closer and check. +Dėl to jų kintamieji yra kaip tos dėžės į kurias kiti meta kas papuola nesivargindami pakeisti etikečių. Kas šiuo metu dėžėje? Kas žino. Tam reikia eiti arčiau ir tikrinti. -Such programmers save a little bit on variable declaration but lose ten times more on debugging. +Tokie programuotojai šiek tiek sutaupo kintamųjų deklaracijoms, bet praranda dešimt kartų daugiau laiko ieškodami ir taisydami klaidas. -An extra variable is good, not evil. +Papildomas kintamasis yra gėris, ne blogis. -Modern JavaScript minifiers and browsers optimize code well enough, so it won't create performance issues. Using different variables for different values can even help the engine optimize your code. +Modernios JavaScript minifikatoriai (kitaip - kodo sutrumpintojai, ang. minifiers) ir naršyklės pakankamai gerai optimizuoja kodą, kad nekiltų veiklos problemų. Naudodami skirtingus kintamuosius, skirtingoms vertėms netgi galite padėti sistemai optimizuoti jūsų kodą. ``` -## Summary +## Santrauka -We can declare variables to store data by using the `var`, `let`, or `const` keywords. +Mes galime deklaruoti kintamuosius, kad talpintume duomenis naudodami `var`, `let` arba `const` raktažodžius. -- `let` -- is a modern variable declaration. -- `var` -- is an old-school variable declaration. Normally we don't use it at all, but we'll cover subtle differences from `let` in the chapter , just in case you need them. -- `const` -- is like `let`, but the value of the variable can't be changed. +- `let` -- yra moderni kintamojo deklaracija. +- `var` -- yra senoviška kintamojo deklaracija. Dažniausiai jo net nenaudojame, bet dar kalbėsime apie subtilius jo skirtumus nuo `let` skyriuje , jeigu kartais jums jų reikėtų. +- `const` -- yra panašus į `let`, bet šio kintamojo vertė nebegali būti pakeista. -Variables should be named in a way that allows us to easily understand what's inside them. +Kintamieji turi būti pavadinti taip, kad mums būtų lengva suprasti kas yra jų viduje.