Che cos’è “Falsy” in JavaScript?

28 ottobre 2019

In JavaScript, un valore è falsy se la coercizione di tipo integrata in JavaScript lo converte in false. Ad esempio, considera la seguente dichiarazione if:

if (v) { console.log('v is not falsy');}

Il console.log() verrà eseguito solo se v non è uno dei seguenti valori:

  • false
  • 0
  • 0n: 0 come BigInt
  • '': Stringa vuota
  • null
  • undefined
  • NaN

Questi 7 valori sono gli unici valori falsi in JavaScript. Ogni valore che non è falso è vero.

In particolare, un oggetto non nullo è sempre veritiero, anche se la sua funzione valueOf() restituisce un valore falso.

function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));

Raccomandazioni

Utilizzare truthy/falsy per coercizioni di tipo implicite in dichiarazioni if è tipicamente disordinato. È raro trovare un caso in cui i 7 valori falsificati siano esattamente l’insieme di valori che volete cercare.

Per esempio, supponiamo che stiate implementando una funzione che controlla che una stringa sia più corta di 25 caratteri.

function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}

Purtroppo, checkLength('') darà un errore perché la stringa vuota è falsificata. Invece, dovreste controllare se v è una stringa:

function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}

Valori nulli

Invece di controllare i valori veri/falsi, di solito volete controllare i valori “nulli”. Uno dei casi d’uso comune per i controlli falsificati è assicurarsi di non ottenere un errore TypeError: Cannot read property 'prop' of null quando si accede a una proprietà di valore v.

È sicuro accedere a v.prop a meno che v sia strettamente uguale a null o undefined. Anche NaN.prop va bene.

const x = Number('abc');x; // NaNx.prop; // undefined

Controllare se v == null è equivalente a v === null || v === undefined.In altre parole, un valore è vagamente uguale a null solo se è strettamente uguale a null o undefined. Quindi controllare se v == null è spesso più accurato che controllare i valori veritieri o falsi.

Altri tutorial fondamentali

  • Come confrontare gli oggetti in JavaScript
  • Come controllare se una variabile JavaScript è indefinita
  • La differenza tra let e var in JavaScript
  • Interpolazione delle stringhe in JavaScript
  • Variabili globali in JavaScript
  • Come controllare il `NaN` in JavaScript
  • JavaScript Enums

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.