|
1 |
| -# Kintamieji (ang. variables) |
| 1 | +# Kintamieji |
2 | 2 |
|
3 | 3 | Dažniausiai JavaScript paraiška turi dirbti su informacija. Štai du pavyzdžiai:
|
4 | 4 | 1. Internetinė parduotuvė -- informacija gali apimti parduodamas prekes ir pirkimo krepšelį.
|
5 | 5 | 2. Pokalbių programėlė -- informacija gali apimti vartotojus, žinutes ir daug daugiau.
|
6 | 6 |
|
7 |
| -Kintamieji yra naudojami tam, kad kauptų šią informaciją. |
| 7 | +Kintamieji (ang. variables) yra naudojami tam, kad kauptų šią informaciją. |
8 | 8 |
|
9 | 9 | ## Kintamasis
|
10 | 10 |
|
11 | 11 | [Kintamasis](https://en.wikipedia.org/wiki/Variable_(computer_science)) yra "įvardinta saugykla" duomenims. Mes galime naudoti kintamuosius, kad kauptume gėrybes, lankytojus ir kitus duomenis.
|
12 | 12 |
|
13 | 13 | Norėdami sukurti kintamąjį su JavaScript, naudokite `let` raktinį žodį (ang. "keyword").
|
14 | 14 |
|
15 |
| -Žemiau esantis pareiškimas sukuria (kitais žodžiais: *declaruoja* ang.*declares*) kintamąjį su pavadinimu "message": |
| 15 | +Žemiau esantis pareiškimas sukuria (kitais žodžiais: *deklaruoja* ang.*declares*) kintamąjį su pavadinimu "message": |
16 | 16 |
|
17 | 17 | ```js
|
18 | 18 | let message;
|
@@ -53,9 +53,9 @@ Mes taip pat galime deklaruoti kelis kintamuosius vienoje eilėje:
|
53 | 53 | let user = 'John', age = 25, message = 'Labas';
|
54 | 54 | ```
|
55 | 55 |
|
56 |
| -Tai atrodo trumpiau, bet iš tikrųjų mes nerekomenduojame taip daryti. Tam, kad būtų lengviau perskaityti kodą, prašau, naudokite vieną eilę kiekvienam kintamajam. |
| 56 | +Taip atrodo trumpiau, bet iš tikrųjų nerekomenduojame taip daryti. Tam, kad būtų lengviau perskaityti kodą, rekomenduojame naudoti atskirą eilę kiekvienam kintamajam. |
57 | 57 |
|
58 |
| -Kelių eilučių variantas ilgesnis, bet jį lengviau perskaityti: |
| 58 | +Kelių eilių variantas ilgesnis, bet jį lengviau perskaityti: |
59 | 59 |
|
60 | 60 | ```js
|
61 | 61 | let user = 'John';
|
@@ -88,14 +88,14 @@ Senesniuose skriptuose galite rasti raktažodį: `var` vietoje `let`:
|
88 | 88 | *!*var*/!* message = 'Labas';
|
89 | 89 | ```
|
90 | 90 |
|
91 |
| -Raktažodis `var` yra *beveik* tas pats kaip `let`. Jis taip pat deklaruoja kintamąjį, bet šiekt eik kitokiu, "senoviniu" būdu. |
| 91 | +Raktažodis `var` yra *beveik* tas pats kaip `let`. Jis taip pat deklaruoja kintamąjį, bet šiek tiek kitokiu, "senoviniu" būdu. |
92 | 92 |
|
93 | 93 | Yra subtilūs skirtumai tarp `let` ir `var`, bet kol kas jie mums nėra svarbūs. Mes apie juos kalbėsime detaliau skyriuje <info:var>.
|
94 | 94 | ````
|
95 | 95 |
|
96 | 96 | ## Tikro gyvenimo analogija
|
97 | 97 |
|
98 |
| -Mes galime lengviau suprasti "kintamojo" sąvoką jeigu įsivaizduotume jį kaip "dėžę" skirtą duomenims ant kurios priklijuotas unikaliai pavadintas lipdukas. |
| 98 | +Tam kad būtų lengviau suprasti "kintamojo" sąvoką, įsivaizduokime jį kaip "dėžę" skirtą sudėti duomenims, ant kurios priklijuotas unikaliai pavadintas lipdukas. |
99 | 99 |
|
100 | 100 | Pavyzdžiui kintamąjį `message` galime įsivaizduoti kaip dėžę su etikete `"message"`, kurios viduje yra patalpinta vertė `"Labas!"`:
|
101 | 101 |
|
@@ -161,154 +161,154 @@ Kai pavadinimas susideda iš kelių žodžių, dažniausiai naudojamas [camelCas
|
161 | 161 |
|
162 | 162 | Į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.
|
163 | 163 |
|
164 |
| -These names are valid: |
| 164 | +Šie pavadinimai yra tinkami: |
165 | 165 |
|
166 | 166 | ```js run untrusted
|
167 |
| -let $ = 1; // declared a variable with the name "$" |
168 |
| -let _ = 2; // and now a variable with the name "_" |
| 167 | +let $ = 1; // deklaruotas kintamasis su pavadinimu "$" |
| 168 | +let _ = 2; // o dabar kintamasis su pavadinimu "_" |
169 | 169 |
|
170 | 170 | alert($ + _); // 3
|
171 | 171 | ```
|
172 | 172 |
|
173 |
| -Examples of incorrect variable names: |
| 173 | +Pavyzdžiai neteisingų pavadinimų kintamiesiems: |
174 | 174 |
|
175 | 175 | ```js no-beautify
|
176 |
| -let 1a; // cannot start with a digit |
| 176 | +let 1a; // negali prasidėti skaičiumi |
177 | 177 |
|
178 |
| -let my-name; // hyphens '-' aren't allowed in the name |
| 178 | +let my-name; // brūkšniai '-' pavadinime neleidžiami |
179 | 179 | ```
|
180 | 180 |
|
181 | 181 | ```smart header="Case matters"
|
182 |
| -Variables named `apple` and `AppLE` are two different variables. |
| 182 | +Kintamieji su pavadinimais `obuolys` ir `obuoLYS` yra du skirtingi kintamieji. |
183 | 183 | ```
|
184 | 184 |
|
185 | 185 | ````smart header="Non-Latin letters are allowed, but not recommended"
|
186 |
| -It is possible to use any language, including cyrillic letters or even hieroglyphs, like this: |
| 186 | +Yra galima naudoti bet kokią kalbą, net kirilicos raides ar hieroglifus kaip pavyzdyje: |
187 | 187 |
|
188 | 188 | ```js
|
189 | 189 | let имя = '...';
|
190 | 190 | let 我 = '...';
|
191 | 191 | ```
|
192 | 192 |
|
193 |
| -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. |
| 193 | +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. |
194 | 194 | ````
|
195 | 195 |
|
196 |
| -````warn header="Reserved names" |
197 |
| -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. |
| 196 | +````warn header="Rezervuoti pavadinimai" |
| 197 | +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. |
198 | 198 |
|
199 |
| -For example: `let`, `class`, `return`, and `function` are reserved. |
| 199 | +Pavyzdžiui: `let`, `class`, `return` ir `function` yra rezervuoti. |
200 | 200 |
|
201 |
| -The code below gives a syntax error: |
| 201 | +Kodas apačioje atiduoda sintaksės klaidą: |
202 | 202 |
|
203 | 203 | ```js run no-beautify
|
204 |
| -let let = 5; // can't name a variable "let", error! |
205 |
| -let return = 5; // also can't name it "return", error! |
| 204 | +let let = 5; // negalima kintamojo pavadinti "let", klaida! |
| 205 | +let return = 5; // taip pat negalima pavadinti "return", klaida! |
206 | 206 | ```
|
207 | 207 | ````
|
208 | 208 |
|
209 |
| -````warn header="An assignment without `use strict`" |
| 209 | +````warn header="Paskyrimas be `use strict`" |
210 | 210 |
|
211 |
| -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. |
| 211 | +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` tam kad palaikytume suderinamumų su senaisiais skirptais. |
212 | 212 |
|
213 | 213 | ```js run no-strict
|
214 |
| -// note: no "use strict" in this example |
| 214 | +// atkreipkite dėmesį: "use strict" nenaudojamas šiame pavyzdyje |
215 | 215 |
|
216 |
| -num = 5; // the variable "num" is created if it didn't exist |
| 216 | +num = 5; // sukuriamas kintamasis "num", jeigu neegzistavo prieš tai |
217 | 217 |
|
218 | 218 | alert(num); // 5
|
219 | 219 | ```
|
220 | 220 |
|
221 |
| -This is a bad practice and would cause an error in strict mode: |
| 221 | +Tai yra bloga praktika ir sukeltų klaidą griežtame režime (ang. strict mode): |
222 | 222 |
|
223 | 223 | ```js
|
224 | 224 | "use strict";
|
225 | 225 |
|
226 | 226 | *!*
|
227 |
| -num = 5; // error: num is not defined |
| 227 | +num = 5; // klaida: num nėra apibrėžtas |
228 | 228 | */!*
|
229 | 229 | ```
|
230 | 230 | ````
|
231 | 231 |
|
232 |
| -## Constants |
| 232 | +## Konstantos |
233 | 233 |
|
234 |
| -To declare a constant (unchanging) variable, use `const` instead of `let`: |
| 234 | +Tam kad deklaruotume konstantą (ang. constant) (pastovų) kintamąjį, naudojame `const` vietoje `let`: |
235 | 235 |
|
236 | 236 | ```js
|
237 | 237 | const myBirthday = '18.04.1982';
|
238 | 238 | ```
|
239 | 239 |
|
240 |
| -Variables declared using `const` are called "constants". They cannot be reassigned. An attempt to do so would cause an error: |
| 240 | +Kintamieji deklaruoti naudojant `const` yra vadinami "konstantomis". Jie negali būti paskirti iš naujo. Bandymas tai padaryti sukeltų klaidą: |
241 | 241 |
|
242 | 242 | ```js run
|
243 | 243 | const myBirthday = '18.04.1982';
|
244 | 244 |
|
245 |
| -myBirthday = '01.01.2001'; // error, can't reassign the constant! |
| 245 | +myBirthday = '01.01.2001'; // klaida, negalima priskirti iš naujo konstantos! |
246 | 246 | ```
|
247 | 247 |
|
248 |
| -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. |
| 248 | +Kai programuotojas yra užtikrintas, kad kintamasis niekada nesikeis, jie gali deklaruoti jį su `const`, kad garantuotų ir aiškiai praneštų šį faktą ir kitiems. |
249 | 249 |
|
250 | 250 |
|
251 |
| -### Uppercase constants |
| 251 | +### Konstantos didžiosiomis raidėmis |
252 | 252 |
|
253 |
| -There is a widespread practice to use constants as aliases for difficult-to-remember values that are known prior to execution. |
| 253 | +Plačiai paplitusi praktika naudoti konstantas kaip kodinius pavadinimus sunkiai įsimenamoms vertėms, kurios yra jau žinomos prieš atlikimą. |
254 | 254 |
|
255 |
| -Such constants are named using capital letters and underscores. |
| 255 | +Tokios konstantos pavadinamos naudojant didžiąsias raides ir pabrėžimo ženklą. |
256 | 256 |
|
257 |
| -For instance, let's make constants for colors in so-called "web" (hexadecimal) format: |
| 257 | +Pavyzdžiui, sukurkime konstantas spalvoms su taip vadinamu internetiniu (šešioliktainiu, ang. hexadecimal) formatu: |
258 | 258 |
|
259 | 259 | ```js run
|
260 | 260 | const COLOR_RED = "#F00";
|
261 | 261 | const COLOR_GREEN = "#0F0";
|
262 | 262 | const COLOR_BLUE = "#00F";
|
263 | 263 | const COLOR_ORANGE = "#FF7F00";
|
264 | 264 |
|
265 |
| -// ...when we need to pick a color |
| 265 | +// ...kai mums reikia išsirinkti spalvą |
266 | 266 | let color = COLOR_ORANGE;
|
267 | 267 | alert(color); // #FF7F00
|
268 | 268 | ```
|
269 | 269 |
|
270 |
| -Benefits: |
| 270 | +Nauda: |
271 | 271 |
|
272 |
| -- `COLOR_ORANGE` is much easier to remember than `"#FF7F00"`. |
273 |
| -- It is much easier to mistype `"#FF7F00"` than `COLOR_ORANGE`. |
274 |
| -- When reading the code, `COLOR_ORANGE` is much more meaningful than `#FF7F00`. |
| 272 | +- `COLOR_ORANGE` daug lengviau prisiminti nei `"#FF7F00"`. |
| 273 | +- Daug lengviau būtų įvelti klaidų spausdinant klaviatūra `"#FF7F00"` negu `COLOR_ORANGE`. |
| 274 | +- Skaitant kodą, `COLOR_ORANGE` turės daugiau prasmės nei `#FF7F00`. |
275 | 275 |
|
276 |
| -When should we use capitals for a constant and when should we name it normally? Let's make that clear. |
| 276 | +Kada turėtume naudoti didžiąsias raides konstantoms ir kada turėtume jas pavadinti normaliu būdu? Išsiaiškinkime. |
277 | 277 |
|
278 |
| -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. |
| 278 | +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. |
279 | 279 |
|
280 |
| -For instance: |
| 280 | +Pavyzdžiui: |
281 | 281 | ```js
|
282 |
| -const pageLoadTime = /* time taken by a webpage to load */; |
| 282 | +const pageLoadTime = /* kiek laiko užtruko paliesti puslapį */; |
283 | 283 | ```
|
284 | 284 |
|
285 |
| -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. |
| 285 | +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. |
286 | 286 |
|
287 |
| -In other words, capital-named constants are only used as aliases for "hard-coded" values. |
| 287 | +Kitais žodžiais, didžiosiomis raidėmis pavadintos konstantos yra naudojamos kaip kodiniai žodžiai išanksto sukoduotoms (ang "hard-coded") vertėms. |
288 | 288 |
|
289 |
| -## Name things right |
| 289 | +## Pavadinkite daiktus teisingai |
290 | 290 |
|
291 |
| -Talking about variables, there's one more extremely important thing. |
| 291 | +Kalbant apie kintamuosius yra dar vienas labai svarbus punktas. |
292 | 292 |
|
293 |
| -A variable name should have a clean, obvious meaning, describing the data that it stores. |
| 293 | +Kintamojo pavadinimas turi turėti švarią, aiškią reikšmę, apibūdinančią duomenis, kuriuos jis saugo. |
294 | 294 |
|
295 |
| -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. |
| 295 | +Kintamųjų įvardinimas yra viena iš svarbiausių ir sudėtingiausių sugebėjimų programuojant. Žvilgtelėjus į kintamojų pavadinimus galima nustatyti kurį kodą parašė naujokas, o kurį jau patyręs programuotojas. |
296 | 296 |
|
297 |
| -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. |
| 297 | +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. |
298 | 298 |
|
299 |
| -Please spend time thinking about the right name for a variable before declaring it. Doing so will repay you handsomely. |
| 299 | +Prašau, skirkite laiko sugalvodami kintamajam tinkamą pavadinimą prieš jį deklaruodami. Toks įprotis jums tikrai vėliau atsipirks. |
300 | 300 |
|
301 |
| -Some good-to-follow rules are: |
| 301 | +Kelios sektinos taisyklės: |
302 | 302 |
|
303 |
| -- Use human-readable names like `userName` or `shoppingCart`. |
304 |
| -- Stay away from abbreviations or short names like `a`, `b`, `c`, unless you really know what you're doing. |
305 |
| -- 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. |
306 |
| -- 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`. |
| 303 | +- Naudokite žmogui lengvai perskaitomus pavadinimus, kaip `userName` arba `shoppingCart`. |
| 304 | +- Laikykitės atokiau nuo sutrumpinimų arba trumpų pavadinimų kaip `a`, `b`, `c`, nebent tikrai žinote ką darote. |
| 305 | +- Pavadinimus kurkite kaip galima labiau apibūdinančius, bet glaustus. Pavyzdžiai blogų pavadinimų 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. |
| 306 | +- 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`. |
307 | 307 |
|
308 |
| -Sounds simple? Indeed it is, but creating descriptive and concise variable names in practice is not. Go for it. |
| 308 | +Skamba paprastai? Iš tikrųjų taip ir yra, bet praktikoje sukurti apibūdinančius ir tuo pačiu glaustus kintamuosųjų pavadinimus nėra lengva. Pabandykite. |
309 | 309 |
|
310 |
| -```smart header="Reuse or create?" |
311 |
| -And the last note. There are some lazy programmers who, instead of declaring new variables, tend to reuse existing ones. |
| 310 | +```smart header="Panaudoti vėl ar sukurti naują?" |
| 311 | +Ir paskutinė pastaba. Yra tingių programuotojų, kurie vietoje to, kad deklaruotų naujus kintamuosius, mėgsta dar kartą panaudoti jau egzistuojančius. |
312 | 312 |
|
313 | 313 | 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.
|
314 | 314 |
|
|
0 commit comments