Co to jest „Falsy” w JavaScript?

Oct 28, 2019

W JavaScript, wartość jest falsyif JavaScript’s built-in type coercion konwertuje go do false. Na przykład, rozważ poniższe if oświadczenie:

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

console.log() będzie działać tylko wtedy, gdy v nie jest jedną z poniższych wartości:

  • false
  • 0
  • 0n: 0 as a BigInt
  • '': Empty string
  • null
  • undefined
  • NaN

Te 7 wartości są jedynymi wartościami falsy w JavaScript. Każda wartość, która nie jest falsy jest truthy.

W szczególności, obiekt non-null jest zawsze truthy, nawet jeśli jego funkcja valueOf() zwraca wartość falsy.

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

Zalecenia

Używanie truthy/falsy dla implicite type coercions w instrukcjach if jest nietypowo niechlujne. Rzadko można znaleźć przypadek, w którym 7 wartości falsy jest dokładnie tym zestawem wartości, na które chcesz zwrócić uwagę.

Na przykład, załóżmy, że implementujesz funkcję, która sprawdza, czy łańcuch jest krótszy niż 25 znaków.

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

Niestety, checkLength('') wyrzuci błąd, ponieważ pusty łańcuch jest falsy. Zamiast tego, powinieneś sprawdzić, czy v jest łańcuchem:

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

Nullish Values

Zamiast sprawdzać wartości true/falsy, zazwyczaj chcesz sprawdzić wartości „nullish”. Jednym z powszechnych przypadków użycia dla sprawdzania falsy jest upewnienie się, że nie otrzymasz błędu TypeError: Cannot read property 'prop' of null podczas uzyskiwania dostępu do właściwości o wartości v.

Bezpiecznie jest uzyskać dostęp do v.prop, chyba że v jest ściśle równe null lub undefined. Nawet NaN.prop jest w porządku.

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

Sprawdzanie, czy v == null jest równoważny v === null || v === undefined.Innymi słowy, wartość jest luźno równa null tylko wtedy, gdy jest ściśle równa null lub undefined. Tak więc sprawdzanie, czy v == null jest często bardziej dokładne niż sprawdzanie dla wartości truthy lub falsy.

More Fundamentals Tutorials

  • How to Compare Objects in JavaScript
  • How to Check if a JavaScript Variable is Undefined
  • The Difference Between let i var w JavaScript
  • JavaScriptowa interpolacja łańcuchów
  • Zmienne globalne w JavaScript
  • Jak sprawdzić dla `NaN` w JavaScript
  • JavaScriptowe enumy

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.