Det här är en del av min serie om viktiga saker. Det är inte de mest spännande inläggen. Men det är viktigt att känna till dessa grunder för att förstå varför JS gör de saker den gör. Det kommer att hjälpa dig att felsöka bättre eftersom du kommer att veta varför saker och ting inte fungerar och hjälpa dig att gå från en juniorutvecklare till en mellanutvecklare. Då kör vi! 💪
Värden i JS har ett inneboende boolskt värde associerat med. Så det är superviktigt att veta vad dessa värden skulle utvärderas till (sant eller falskt), särskilt när det gäller jämförelser och villkor 🤓
Jag använder för att försöka lista ut vilka värden som skulle vara sanna. Gör inte det. Memorera i stället vilka värden som är Falska. Om det inte finns med på listan anses det vara sanningsenligt 👍
// JS Essentials: Falsy ValuesfalseundefinednullNaN0 or +0 or -0"" or '' or `` (empty string)// Everything else is truthy
# Värden som faktiskt är sanningsenliga
Här är några exempel på värden som du kanske trodde var sanna (det gjorde i alla fall jag), men det utvärderar faktiskt till true
. Kom ihåg att om det inte finns på den falska listan är det sant!
// All these will return **true**Boolean(); // Empty Boolean({}); // Empty {}Boolean('0'); // String containing zeroBoolean('false'); // String containing the text falseBoolean(function() {}); // Empty functionBoolean(-Infinity); // Infinity or Negative InfinityBoolean(new Date()); // Date object
# Användning av Falskt värde i villkorliga påståenden
Då varje värde i JS utvärderas till ett boolskt värde (sant eller falskt). Vi kan förkorta vårt villkor i if
-uttalandet.
// ❌if(false === null)if(undefined === null)if(null === null)if(NaN === null)if(0 === null)if("" === null)if(value === null)// ✅ Much betterif(!value)
# Användning av Falsy-värde i ternära operatorer
På samma sätt kan du använda det för att förkorta ditt villkor i de ternära operatörerna.
// ❌'' === false ? '🙂' : '🙃';// ✅ Much better'' ? '🙂' : '🙃';
# Användning av Falsy-värde i logiska operatorer
Här är en intressant. Du kan använda ||
och &&
för att returnera ett värde. Att definitivt veta vilket värde som är falsy och truthy är superviktigt.
||
jämförelser stannar så fort ett sanningsenligt uttryck utvärderas
const or = '' || 'hi'; // "hi"const or = || 'hi'; //
&&
jämförelser stannar så fort ett falskt uttryck utvärderas
const and = '' && 'hi'; // ""const and = && 'hi'; // "hi"
# Community Examples
# Using Falsy Values for Unit Testing
Jason A: Ibland använder jag en array med falska värden vid enhetstestning och loopar över dem för att se om min fallback fungerar korrekt, ungefär så här:
.forEach(el => expect(funcImTesting(el).to.be('my fallback')),);
Tack: @jsawbrey