You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/15-function-basics/article.md
+57-57Lines changed: 57 additions & 57 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
# Funcții
2
2
3
-
Destul de des avem nevoie să realizăm o acțiune similară în multe locuri ale secvenței de instrucțiuni.
3
+
Destul de des avem nevoie să realizăm o acțiune similară în multe locuri ale script-ului.
4
4
5
5
De exemplu, avem nevoie să arătăm un mesaj frumos când un vizitator se conectează, se deconectează și poate în altă parte.
6
6
7
7
Funcțiile sunt principalele "blocuri de construcție" ale programului. Ele permit apelarea codului de mai multe ori fără repetare.
8
8
9
-
Am văzut deja exemple de funcții încorporate, precum `alert(message)`, `prompt(message, default)` și `confirm(question)`. Dar putem crea și funcții proprii.
9
+
Am văzut deja exemple de funcții încorporate, precum `alert(message)`, `prompt(message, default)` și `confirm(question)`. Dar putem crea și funcții proprii de asemenea.
10
10
11
-
## Declararea Funcției
11
+
## Funcție Declarată
12
12
13
-
Pentru a crea o funcție putem folosi *declararea funcției*.
13
+
Pentru a crea o funcție putem folosi o *funcție declarată*.
14
14
15
15
Arata cam așa:
16
16
@@ -58,15 +58,15 @@ De exemplu:
58
58
```js run
59
59
functionshowMessage() {
60
60
*!*
61
-
let message ="Bună, sunt JavaScript!"; //local variable
61
+
let message ="Bună, sunt JavaScript!"; //variabilă locală
62
62
*/!*
63
63
64
64
alert( message );
65
65
}
66
66
67
-
showMessage(); //Hello, I'm JavaScript!
67
+
showMessage(); //Bună, sunt JavaScript!
68
68
69
-
alert( message ); // <-- Error! The variable is local to the function
69
+
alert( message ); // <-- Eroare! Variabila este locală funcției
70
70
```
71
71
72
72
## Variabile exterioare
@@ -81,7 +81,7 @@ function showMessage() {
81
81
alert(message);
82
82
}
83
83
84
-
showMessage(); //Hello, John
84
+
showMessage(); //Bună, John
85
85
```
86
86
87
87
Funcția are acces complet la variabila exterioară. Il poate modifica si ea.
@@ -92,43 +92,43 @@ De exemplu:
92
92
let*!*userName*/!*='John';
93
93
94
94
functionshowMessage() {
95
-
*!*userName*/!* = "Bob"; // (1) changed the outer variable
95
+
*!*userName*/!* = "Bob"; // (1) a schimbat variabila exterioară
96
96
97
97
let message ='Bună, '+*!*userName*/!*;
98
98
alert(message);
99
99
}
100
100
101
-
alert( userName ); // *!*John*/!* before the function call
101
+
alert( userName ); // *!*John*/!* înainte de apelul funcției
102
102
103
103
showMessage();
104
104
105
-
alert( userName ); // *!*Bob*/!*, the value was modified by the function
105
+
alert( userName ); // *!*Bob*/!*, valoarea a fost modificată de funcție
106
106
```
107
107
108
108
Variabila exterioară este utilizată numai dacă nu există una locală.
109
109
110
-
Dacă o variabilă cu același nume este declarată în interiorul funcției, atunci aceasta *pune în umbră* pe cea exterioară. De exemplu, în codul de mai jos, funcția folosește localul `userName`. Cel exterior este ignorat:
110
+
Dacă o variabilă cu același nume este declarată în interiorul funcției atunci aceasta o *pune în umbră* pe cea exterioară. De exemplu, în codul de mai jos funcția folosește `userName`-ul local. Cel exterior este ignorat:
111
111
112
112
```js run
113
113
let userName ='John';
114
114
115
115
functionshowMessage() {
116
116
*!*
117
-
let userName ="Bob"; //declare a local variable
117
+
let userName ="Bob"; //declară o variabilă locală
118
118
*/!*
119
119
120
120
let message ='Bună, '+ userName; // *!*Bob*/!*
121
121
alert(message);
122
122
}
123
123
124
-
//the function will create and use its own userName
124
+
//funcția va crea și va folosi propriul userName
125
125
showMessage();
126
126
127
-
alert( userName ); // *!*John*/!*, unchanged, the function did not access the outer variable
127
+
alert( userName ); // *!*John*/!*, neschimbat, funcția nu a accesat variabila exterioară
128
128
```
129
129
130
130
```smart header="Variabile globale"
131
-
Variabile declarate în afara oricărei funcții, precum cel exterior `userName` în codul de mai sus, se numesc *globale*.
131
+
Variabile declarate în afara oricărei funcții, precum acel `userName` exterior în codul de mai sus, se numesc *globale*.
132
132
133
133
Variabilele globale sunt vizibile din orice funcție (dacă nu sunt umbrite de cele locale).
134
134
@@ -142,42 +142,42 @@ Putem transmite date arbitrare funcțiilor folosind parametri.
142
142
În exemplul de mai jos, funcția are doi parametri: `from` și `text`.
143
143
144
144
```js run
145
-
functionshowMessage(*!*from, text*/!*) { //parameters:from, text
145
+
functionshowMessage(*!*from, text*/!*) { //parametrii:from, text
Când funcția este apelată în liniile `(*)` și `(**)`, valorile date sunt copiate în variabilele locale `from` și `text`. Atunci funcția le folosește.
153
+
Când funcția este apelată în liniile `(*)` și `(**)`, valorile date sunt copiate în variabile locale `from` și `text`. Atunci funcția le folosește.
154
154
155
155
Iată încă un exemplu: avem o variabilă `from` și este transmis funcției. Vă rugăm să rețineți: functia schimbă `from`, dar schimbarea nu se vede afară, deoarece o funcție primește întotdeauna o copie a valorii:
156
156
157
157
```js run
158
158
functionshowMessage(from, text) {
159
159
160
160
*!*
161
-
from = '*' + from + '*'; // make "from" look nicer
161
+
from ='*'+ from +'*'; //face ca "from" să pară mai frumos
162
162
*/!*
163
163
164
164
alert( from +': '+ text );
165
165
}
166
166
167
167
let from ="Ann";
168
168
169
-
showMessage(from, "Bună"); // *Ann*: Hello
169
+
showMessage(from, "Bună"); // *Ann*: Bună
170
170
171
-
// the value of "from" is the same, the function modified a local copy
171
+
//valoarea lui "from" este aceeași, funcția a modificat o copie locală
172
172
alert( from ); // Ann
173
173
```
174
174
175
175
Când o valoare este transmisă ca parametru de funcție, se mai numește *argument*.
176
176
177
177
Cu alte cuvinte, pentru a clarifica acești termeni:
178
178
179
-
- Un parametru este variabila listată între paranteze în declarația funcției (este un termen de declarare)
180
-
-Un argument este valoarea care este transmisă funcției atunci când este apelată (este un termen de apelare).
179
+
- Un parametru este variabila listată între paranteze în funcția declarată (este un termen din timpul declarației)
180
+
-Un argument este valoarea care este transmisă funcției atunci când este apelată (este un termen din timpul apelării).
181
181
182
182
Declarăm funcții care listează parametrii lor, apoi le numim argumente de trecere.
183
183
@@ -203,17 +203,17 @@ function showMessage(from, *!*text = "nu este dat niciun text"*/!*) {
203
203
alert( from +": "+ text );
204
204
}
205
205
206
-
showMessage("Ann"); // Ann: no text given
206
+
showMessage("Ann"); // Ann: nu este dat niciun text
207
207
```
208
208
209
-
Acum, dacă parametrul`text` nu este trecut, va primi valoarea `"nu este dat niciun text"`
209
+
Acum dacă parametrul`text` nu este trecut, va primi valoarea `"nu este dat niciun text"
210
210
211
211
Aici `"nu este dat niciun text"` este un șir, dar poate fi o expresie mai complexă, care este evaluată și atribuită doar dacă parametrul lipsește. Deci, acest lucru este posibil:
212
212
213
213
```js run
214
214
function showMessage(from, text = anotherFunction()) {
215
-
// anotherFunction() only executed if no text given
216
-
// its result becomes the value of text
215
+
// anotherFunction() executat numai dacă nu este dat text
216
+
// rezultatul său devine valoarea textului
217
217
}
218
218
```
219
219
@@ -222,7 +222,7 @@ function showMessage(from, text = anotherFunction()) {
222
222
223
223
În exemplul de mai sus, `anotherFunction()` nu este apelat deloc, dacă este furnizat parametrul `text`.
224
224
225
-
Pe de altă parte, este numit independent de fiecare dată când lipsește `text`.
225
+
Pe de altă parte, este apelat independent de fiecare dată când lipsește `text`.
226
226
```
227
227
228
228
### Parametriimplicițialternativi
@@ -236,38 +236,38 @@ function showMessage(text) {
236
236
// ...
237
237
238
238
*!*
239
-
if (text === undefined) { // if the parameter is missing
239
+
if (text === undefined) { // dacă parametrul lipsește
240
240
text = 'mesaj gol';
241
241
}
242
242
*/!*
243
243
244
244
alert(text);
245
245
}
246
246
247
-
showMessage(); // empty message
247
+
showMessage(); // mesaj gol
248
248
```
249
249
250
250
...Sauamputeafolosioperatorul`||`:
251
251
252
252
```js
253
253
function showMessage(text) {
254
-
// if text is undefined or otherwise falsy, set it to 'empty'
254
+
// dacă textul este nedefinit sau fals, setați-l ca „gol”
255
255
text = text || 'empty';
256
256
...
257
257
}
258
258
```
259
259
260
-
Motoarele JavaScript moderne acceptă [nullish coalescing operator](info:nullish-coalescing-operator) `??`, este mai bine atunci când majoritatea valorilor false, cum ar fi `0`, ar trebui considerate „normale”:
// dacă numărul este nedefinit sau nul, afișază „necunoscut”
265
265
alert(count ?? "unknown");
266
266
}
267
267
268
268
showCount(0); // 0
269
-
showCount(null); // unknown
270
-
showCount(); // unknown
269
+
showCount(null); // necunoscut
270
+
showCount(); // necunoscut
271
271
```
272
272
273
273
## Returnareauneivalori
@@ -285,7 +285,7 @@ let result = sum(1, 2);
285
285
alert( result ); // 3
286
286
```
287
287
288
-
Directiva `return` poate fi în orice loc al funcției. Când execuția ajunge la el, funcția se oprește, iar valoarea este returnată codului de apelare (atribuit lui `result`).
288
+
Directiva`return`poatefi înoricelocalfuncției. Cândexecuțiaajungelael, funcțiaseoprește, iarvaloareaestereturnată coduluideapelare (atribuit lui `result` de mai sus).
Este posibil să utilizați `return` făra o valoare. Acesta face ca funcția să iasă imediat.
314
+
Esteposibilsă utilizați`return`făraovaloare. Acestafacecafuncțiasă se încheieimediat.
315
315
316
316
Deexemplu:
317
317
@@ -330,13 +330,13 @@ function showMovie(age) {
330
330
331
331
Încoduldemaisus, dacă `checkAge(age)`returnează `false`, atunci`showMovie`nuvatrecela`alert`.
332
332
333
-
```smart header=" O funcție cu un 'return' gol sau fara o returnare este 'undefined'"
333
+
````smartheader=" O funcție cu un 'return' gol sau fara o returnare este 'undefined'"
334
334
Dacă ofuncțienureturnează ovaloare, estelafelca șicândreturnează `undefined`:
335
335
336
336
```js run
337
337
function doNothing() { /* empty */ }
338
338
339
-
alert( doNothing() === undefined ); // true
339
+
alert( doNothing() === undefined ); // adevărat
340
340
```
341
341
342
342
Un`return`golesteacelașicu`return undefined`:
@@ -346,7 +346,7 @@ function doNothing() {
346
346
return;
347
347
}
348
348
349
-
alert( doNothing() === undefined ); // true
349
+
alert( doNothing() === undefined ); // adevărat
350
350
```
351
351
````
352
352
@@ -364,7 +364,7 @@ return*!*;*/!*
364
364
(some + long + expression + or + whatever * f(a) + f(b))
365
365
```
366
366
367
-
Deci, devine efectiv un 'return' gol.
367
+
Deci, devineefectivun`return`gol.
368
368
369
369
Dacă dorimcaexpresiareturnată să se înfășoarepemaimultelinii, artrebuisă o începempeaceeașiliniecu`return`. Saucelpuținpunețiparantezelededeschidereacolo, după cumurmează:
370
370
@@ -380,7 +380,7 @@ return (
380
380
381
381
## Denumireauneifuncții [#function-naming]
382
382
383
-
Funcțiile sunt acțiuni. Deci, numele lor este de obicei un verb. Ar trebui să fie scurt, cât mai precis posibil și să descrie ceea ce face funcția, astfel încât cineva care citește codul să obțină o indicație despre ceea ce face funcția.
383
+
Funcțiile sunt acțiuni. Deci numele lor este de obicei un verb. Ar trebui să fie scurt, cât mai precis posibil și să descrie ceea ce face funcția, astfel încât cineva care citește codul să obțină o indicație despre ceea ce face funcția.
384
384
385
385
Este o practică larg răspândită de a începe o funcție cu un prefix verbal care descrie vag acțiunea. Trebuie să existe un acord în cadrul echipei cu privire la semnificația prefixelor.
386
386
@@ -396,11 +396,11 @@ Funcția care începe cu...
396
396
Exemple de astfel de nume:
397
397
398
398
```js no-beautify
399
-
showMessage(..) // shows a message
400
-
getAge(..) // returns the age (gets it somehow)
401
-
calcSum(..) // calculates a sum and returns the result
402
-
createForm(..) // creates a form (and usually returns it)
403
-
checkPermission(..) // checks a permission, returns true/false
399
+
showMessage(..) //arată un mesaj
400
+
getAge(..) //returnează vârsta (o primește cumva)
401
+
calcSum(..) //calculează o sumă și returnează rezultatul
402
+
createForm(..) //creează un Form (și de obicei îl returnează)
403
+
checkPermission(..) //verifică o permisiune, returnează true/false
404
404
```
405
405
406
406
Cu prefixele la loc, o privire asupra numelui unei funcții oferă o înțelegere a ce fel de activitate face și ce fel de valoare returnează.
@@ -412,7 +412,7 @@ Două acțiuni independente deservesc de obicei două funcții, chiar dacă de o
412
412
413
413
Câteva exemple de încălcare a acestei reguli:
414
414
415
-
- `getAge` -- ar fi rău dacă arată o `alertă` cu vârsta (ar trebui doar să obțină).
415
+
- `getAge` -- ar fi rău dacă arată o `alert` cu vârsta (ar trebui doar să obțină).
416
416
- `createForm` -- ar fi rău dacă ar modifica documentul, adăugându-i o formă (ar trebui doar să-l creeze și să-l returneze).
417
417
- `checkPermission` -- ar fi rău dacă afișează mesajul „acces acordat/refuzat”. (ar trebui să efectueze doar verificarea și să returneze rezultatul).
418
418
@@ -433,7 +433,7 @@ Funcțiile ar trebui să fie scurte și să facă un lucru exact. Dacă acel luc
433
433
434
434
O funcție separată este mai ușor de testat și de depanat -- însăși existența sa este un comentariu grozav!
435
435
436
-
De exemplu, compara cele două funcții `showPrimes(n)` de mai jos. Fiecare iese [prime numbers](https://en.wikipedia.org/wiki/Prime_number) pâna la`n`.
436
+
De exemplu, compară cele două funcții `showPrimes(n)` de mai jos. Fiecare emite [numere prime](https://ro.wikipedia.org/wiki/Num%C4%83r_prim) pâna la`n`.
437
437
438
438
Prima variantă folosește o etichetă:
439
439
@@ -450,7 +450,7 @@ function showPrimes(n) {
450
450
}
451
451
```
452
452
453
-
A doua variantă folosește o funcție suplimentară `isPrime(n)` pentru a testa primalitatea:
453
+
A doua variantă folosește o funcție adițională`isPrime(n)` pentru a testa primalitatea:
454
454
455
455
```js
456
456
functionshowPrimes(n) {
@@ -470,7 +470,7 @@ function isPrime(n) {
470
470
}
471
471
```
472
472
473
-
A doua variantă este mai ușor de înțeles, nu-i aşa? În loc de piesa de cod, vedem un nume al acțiunii (`isPrime`). Uneori, oamenii se referă la un astfel de cod ca la *auto-descriere*.
473
+
A doua variantă este mai ușor de înțeles, nu-i aşa? În loc de piesa de cod, vedem un nume al acțiunii (`isPrime`). Uneori, oamenii se referă la un astfel de cod ca *auto-descriptiv*.
474
474
475
475
Deci, funcțiile pot fi create chiar dacă nu intenționăm să le reutilizam. Ele structurează codul și îl fac lizibil.
476
476
@@ -479,18 +479,18 @@ Deci, funcțiile pot fi create chiar dacă nu intenționăm să le reutilizam. E
479
479
O declarație de funcție arată astfel:
480
480
481
481
```js
482
-
function name(parameters, delimited, by, comma) {
483
-
/* code */
482
+
functionname(parametri, delimitați, de, virgulă) {
483
+
/*cod*/
484
484
}
485
485
```
486
486
487
487
- Valorile transmise unei funcții ca parametri sunt copiate în variabilele locale.
488
-
- funcția poate accesa variabile exterioare. Dar funcționează numai din interior spre exterior. Codul din afara funcției nu vede variabilele locale.
488
+
- Funcția poate accesa variabile exterioare. Dar funcționează numai din interior spre exterior. Codul din afara funcției nu vede variabilele locale.
489
489
- O funcție poate returna o valoare. Dacă nu, atunci rezultatul ei este `undefined`.
490
490
491
491
Pentru a face codul curat și ușor de înțeles, este recomandat să folosiți în principal variabile și parametri locali în funcție, nu variabile exterioare.
492
492
493
-
Este întotdeauna mai ușor de înțeles o funcție care primește parametri, lucrează cu ele și returnează un rezultat, decât o funcție care nu primește niciun parametru, dar modifică variabilele exterioare ca efect secundar.
493
+
Este întotdeauna mai ușor de înțeles o funcție care primește parametri, lucrează cu ei și returnează un rezultat, decât o funcție care nu primește niciun parametru, dar modifică variabilele exterioare ca efect secundar.
0 commit comments