Vai al contenuto

Funzioni Javascript che potrebbero esserti utili

JavaScript è la pietra angolare dello sviluppo web moderno. Sebbene molti sviluppatori conoscano le funzionalità più comuni, esistono decine di feature avanzate o poco usate che possono rendere il tuo codice più pulito, efficiente e facile da gestire. In questo post vedremo 20 funzioni sorprendenti di JS, con esempi pratici per ognuna.

1. Operatore di Coalescenza Null (??)

Restituisce un valore di default quando una variabile è null o undefined.

let foo = null;
let bar = foo ?? 'default value';
console.log(bar); // Output: 'default value'

2. Optional Chaining (?.)

Permette di accedere in modo sicuro a proprietà annidate senza errori di runtime.

const user = {
    profile: { name: 'Alice' }
};
console.log(user.profile?.name); // 'Alice'
console.log(user.account?.name); // undefined

3. Separatore numerico (_)

Rende i numeri più leggibili nelle grandi cifre.

const largeNumber = 1_000_000;
console.log(largeNumber); // 1000000

4. Promise.allSettled

Aspetta tutti i promise, sia risolti che rifiutati, e restituisce un array con lo stato di ciascuno.

const promises = [
  Promise.resolve('Success'),
  Promise.reject('Error'),
  Promise.resolve('Another Success')
];

Promise.allSettled(promises).then(results => {
  results.forEach(result => console.log(result));
});

5. Campi privati nelle classi

Con # puoi dichiarare proprietà private dentro una classe.

class MyClass {
    #privateField = 42;
    getPrivateField() {
        return this.#privateField;
    }
}

const instance = new MyClass();
console.log(instance.getPrivateField()); // 42

6. Operatori logici con assegnazione

let a = true;
let b = false;

a &&= 'Assigned if true';
b ||= 'Assigned if false';

console.log(a); // 'Assigned if true'
console.log(b); // 'Assigned if false'

7. Etichette per cicli e blocchi

outerLoop: for(let i = 0; i < 3; i++) {
  for(let j = 0; j < 3; j++) {
    if (j === 1) break outerLoop;
  }
}

8. Template Tag Functions

function logWithTimestamp(strings, ...values) {
    const timestamp = new Date().toISOString();
    return `[${timestamp}] ` + strings.reduce((acc, str, i) => acc + str + (values[i] || ''), '');
}

console.log(logWithTimestamp`User ${'John'} logged in`);

9. Operatori bitwise

const isEven = num => (num & 1) === 0;
console.log(isEven(4)); // true

10. Operatore in

const obj = { name: 'Alice', age: 25 };
console.log('name' in obj); // true

11. Operatore debugger

function checkValue(value) {
  debugger;
  return value > 10;
}
checkValue(15);

12. Assegnazione in catena

let a, b, c;
a = b = c = 10;

13. Nomi di funzioni dinamici

const funcName = 'dynamicFunction';
const obj = {
  [funcName]() {
    return 'Hello!';
  }
};

console.log(obj.dynamicFunction());

14. Oggetto arguments

function sum() {
  let total = 0;
  for (let i = 0; i < arguments.length; i++) total += arguments[i];
  return total;
}

console.log(sum(1,2,3)); // 6

15. Operatore unario +

console.log(+'123'); // 123
console.log(+true); // 1

16. Operatore di potenza **

const result = 2 ** 3;
console.log(result); // 8

17. Le funzioni hanno proprietà

function myFunction() {}
myFunction.description = 'Funzione con proprietà';
console.log(myFunction.description);

18. Getter e Setter

const obj = {
  _age: 0,
  get age() { return this._age; },
  set age(v) { if(v >= 0) this._age = v; }
};

obj.age = 30;
console.log(obj.age); // 30

19. Doppio !!

console.log(!!'text'); // true
console.log(!!0);     // false

20. Oggetti Map e Set

const mySet = new Set();
mySet.add('apple');
mySet.add('banana');
console.log(mySet.size); // 2

Conclusione

Queste 20 funzionalità poco conosciute di JavaScript possono sembrare piccole, ma possono cambiare il modo in cui scrivi codice: rendendolo più pulito, sicuro e efficiente. Provale nei tuoi progetti per scoprire nuove possibilità.