Mikä on ”Falsy” JavaScriptissä?

Oct 28, 2019

Javaskriptissä arvo on falsy, jos JavaScriptin sisäänrakennettu tyypin pakkokorjaus muuntaa sen arvoksi false. Tarkastellaan esimerkiksi alla olevaa if-lausetta:

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

console.log() toimii vain, jos v ei ole yksi alla olevista arvoista:

  • false
  • 0
  • 0n: 0 BigInt:nä
  • '': Tyhjä merkkijono
  • null
  • undefined
  • NaN

Nämä 7 arvoa ovat JavaScriptin ainoat virheelliset arvot. Kaikki arvot, jotka eivät ole virheellisiä, ovat totuudenmukaisia.

Erityisesti ei-null-olio on aina totuudellinen, vaikka sen valueOf()-funktio palauttaisi falsy-arvon.

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

Suositukset

Totuudellisuuden/falsy:n käyttäminen implisiittisiin tyyppipakotteisiin if-lausekkeissa on tyypillisesti sekavaa. On harvinaista löytää tapaus, jossa 7 falsy-arvoa on juuri se joukko arvoja, joita halutaan varoa.

Esimerkiksi oletetaan, että olet toteuttamassa funktiota, joka tarkistaa, että merkkijono on lyhyempi kuin 25 merkkiä.

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

Epäonnekseen checkLength('') heittää virheen, koska tyhjä merkkijono onfalsy. Sen sijaan sinun pitäisi tarkistaa, onko v merkkijono:

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

Tyhjät arvot

Todellisten/väärien arvojen tarkistamisen sijaan haluat yleensä tarkistaa ”tyhjät” arvot. Yksi falsy-tarkastusten yleisistä käyttötapauksista on varmistaa, ettet saa TypeError: Cannot read property 'prop' of null-virhettä, kun käytät ominaisuutta, jonka arvo on v.

Se on turvallista käyttää v.prop, ellei v ole tiukasti yhtä suuri kuin null tai undefined. Jopa NaN.prop on hyvä.

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

Tarkistetaan, onko v == null yhtä suuri kuin v === null || v === undefined.Toisin sanoen arvo on löyhästi yhtä suuri kuin null vain, jos se on tiukasti yhtä suuri kuin null tai undefined. Joten sen tarkistaminen, onko v == null, on usein tarkempi kuin totuudenmukaisten tai virheellisten arvojen tarkistaminen.

Lisää perusteiden opetusohjelmia

  • How to Compare Objects in JavaScript
  • How to Check if a JavaScript Variable is Undefined
  • The Difference Between let ja var JavaScriptissä
  • JavaScript-merkkijonojen interpolointi
  • Globaalit muuttujat JavaScriptissä
  • How to Check for `NaN` in JavaScript
  • JavaScript Enums

Vastaa

Sähköpostiosoitettasi ei julkaista.