Skip to content

Cum sa definesti si sa folosesti functii in JavaScript

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum sa definesti si sa folosesti functii in JavaScript. We cover key concepts, practical examples, and best practices.

Functiile sunt elementele de baza ale JavaScript-ului. Acest ghid iti arata cum sa definesti functii moderne, sa folosesti parametri flexibili si arrow functions.

Quick Fix

1. Functii clasice vs arrow functions

Functiile clasice au propriul this, arrow functions mostenesc this din context:

// Clasica
function add(a, b) {
    return a + b;
}

// Arrow function
const addArrow = (a, b) => a + b;

console.log(add(2, 3));
console.log(addArrow(2, 3));
5
5

2. Parametri impliciti

Poti seta valori implicite pentru parametri:

function greet(name = 'Oaspete', greeting = 'Salut') {
    return `${greeting}, ${name}!`;
}
console.log(greet('Ion'));
console.log(greet());
Salut, Ion!
Salut, Oaspete!

3. Rest parameters

Rest params colecteaza argumentele ramase intr-un array:

function sum(...numbers) {
    return numbers.reduce((acc, n) => acc + n, 0);
}
console.log(sum(1, 2, 3, 4, 5));
15

4. Spread pentru apeluri

Spread desface un array ca argumente individuale:

const numbers = [5, 10, 15];
console.log(Math.max(...numbers));
15

5. Functii ca valori (first-class)

Functiile pot fi pasate ca argumente:

const operations = {
    double: n => n * 2,
    square: n => n * n
};

function applyOperation(arr, op) {
    return arr.map(op);
}

console.log(applyOperation([1, 2, 3], operations.double));
console.log(applyOperation([1, 2, 3], operations.square));
[2, 4, 6]
[1, 4, 9]

Prevention

  • Foloseste arrow functions pentru callback-uri si expresii scurte
  • Foloseste functii clasice cand ai nevoie de propriul this
  • Seteaza valori implicite pentru parametri optionali
  • Foloseste rest params in loc de obiectul arguments

Common Mistakes

  1. A confunda arguments cu rest params -- arguments este un array-like, nu un array adevarat
  2. A uita return in arrow functions cu corp -- const fn = () => { x } returneaza undefined, nu x
  3. A nu returna in functii cu corp -- {} necesita return explicit
  4. A folosi arrow functions ca metode -- arrow functions nu au propriul this, deci nu functioneaza ca metode
  5. A uita ca parametrii impliciti nu functioneaza cu undefined trimis explicit -- greet(undefined) foloseste valoarea implicita

FAQ

### Care e diferenta dintre functie clasica si arrow function?

Functiile clasice au propriul this, arguments si pot fi constructori. Arrow functions mostenesc this din context si nu pot fi constructori.

Cum pot returna un obiect dintr-o arrow function?

Infasoara obiectul in paranteze: const fn = () => ({ key: 'value' }). Altfel, acoladele sunt interpretate ca corp de functie.

Ce sunt functiile pure?

Functiile pure nu au efecte secundare si returneaza acelasi rezultat pentru aceleasi argumente. Sunt esentiale pentru predictibilitate si testare.

Construit de dezvoltatorii Doda Browser, DodaZIP si Durga Antivirus Pro. Instrumentele DodaTech se integreaza perfect cu JavaScript pentru productivitate si securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro