Ibland måste vi utföra olika åtgärder baserat på olika förhållanden.
för att göra det kan vi användaif
– satsen och den villkorliga operatören?
, det kallas också en ”frågetecken” – operatör.
”if” – satsen
if(...)
utvärderar ett villkor inom parentes och, om resultatet ärtrue
, kör ett block av kod.,
till exempel:
let year = prompt('In which year was ECMAScript-2015 specification published?', '');if (year == 2015) alert( 'You are right!' );
i exemplet ovan är villkoret en enkel jämlikhetskontroll (year == 2015
), men det kan vara mycket mer komplext.,
om vi vill utföra mer än ett uttalande måste vi sätta in vårt kodblock i lockiga hängslen:
if (year == 2015) { alert( "That's correct!" ); alert( "You're so smart!" );}
Vi rekommenderar att du förpackar ditt kodblock med lockiga hängslen {}
varje gång du använder ett if
– uttalande, även om du använder ett det finns bara ett uttalande att utföra. Att göra det förbättrar läsbarheten.
Boolesk konvertering
if (…)
utvärderar uttrycket inom parentes och konverterar resultatet till en boolesk.,
låt oss återkalla konverteringsreglerna från kapiteltypskonverteringar:
- ett nummer
0
, en tom sträng""
,null
,undefined
, ochNaN
alla har blivitfalse
. På grund av att de kallas ”falsy” värden. - andra värden blir
true
, så de kallas ”truthy”.,
så skulle koden under detta villkor aldrig exekvera:
if (0) { // 0 is falsy ...}
…och inuti detta tillstånd – det kommer alltid att:
if (1) { // 1 is truthy ...}
Vi kan också passera ett förutbestämt booleskt värde tillif
, så här:
let cond = (year == 2015); // equality evaluates to true or falseif (cond) { ...}
klausulen ”else”
uttalandetif
kan innehålla ett valfritt ”else”-block. Den utför när tillståndet är falsy.,
till exempel:
flera villkor: ”else if”
Ibland vill vi testa flera varianter av ett tillstånd. Klausulen else if
låter oss göra det.
till exempel:
i koden ovan kontrollerar JavaScript förstyear < 2015
. Om det är falsy går det till nästa villkor year > 2015
. Om det också är falsy, visar det den sista alert
.
det kan finnas flerelse if
block. Den slutliga else
är valfri.
villkorlig operatör”?,’
Ibland måste vi tilldela en variabel beroende på ett tillstånd.
till exempel:
den så kallade ”villkorliga” eller ”frågetecken”-operatören låter oss göra det på ett kortare och enklare sätt.
operatören representeras av ett frågetecken?
. Ibland kallas det ”ternära”, eftersom operatören har tre operander. Det är faktiskt den enda operatören i JavaScript som har så många.,
syntaxen är:
let result = condition ? value1 : value2;
condition
utvärderas: om det är sanningsenligt returnerasvalue1
, annars – value2
.
till exempel:
let accessAllowed = (age > 18) ? true : false;
tekniskt sett kan vi utelämna parenteserna runtage > 18
. Frågetecknoperatören har ett lågt företräde, så det körs efter jämförelsen >
.,
det här exemplet kommer att göra samma sak som det föregående:
men parenteser gör koden mer läsbar, så vi rekommenderar att du använder dem.
i exemplet ovan kan du undvika att använda operatören för frågetecken eftersom jämförelsen själv returnerartrue/false
:
// the samelet accessAllowed = age > 18;
Multiple ’?’
en sekvens av frågetecken operatörer ?
kan returnera ett värde som beror på mer än ett villkor.,
till exempel:
let age = prompt('age?', 18);let message = (age < 3) ? 'Hi, baby!' : (age < 18) ? 'Hello!' : (age < 100) ? 'Greetings!' : 'What an unusual age!';alert( message );
det kan vara svårt att först förstå vad som händer. Men efter en närmare titt kan vi se att det bara är en vanlig testsekvens:
Så här ser det ut att använda if..else
:
if (age < 3) { message = 'Hi, baby!';} else if (age < 18) { message = 'Hello!';} else if (age < 100) { message = 'Greetings!';} else { message = 'What an unusual age!';}
icke-traditionell användning av ’?,
Ibland används frågetecknet ?
som ersättning för if
:
let company = prompt('Which company created JavaScript?', '');(company == 'Netscape') ? alert('Right!') : alert('Wrong.');
beroende på tillståndet company == 'Netscape'
, antingen det första eller det andra uttrycket efter att ?
körs och visar en varning.
vi tilldelar inte ett resultat till en variabel här. I stället utför vi olika kod beroende på tillståndet.
det rekommenderas inte att använda frågeteckensoperatören på detta sätt.,
notationen är kortare än motsvarandeif
uttalande, som tilltalar vissa programmerare. Men det är mindre läsbart.
här är samma kod medif
för jämförelse:
let company = prompt('Which company created JavaScript?', '');if (company == 'Netscape') { alert('Right!');} else { alert('Wrong.');}
våra ögon skannar koden vertikalt. Kodblock som spänner över flera rader är lättare att förstå än en lång, horisontell instruktionsuppsättning.,
syftet med frågeteckenoperatören ?
är att returnera ett eller annat värde beroende på dess skick. Använd den för exakt det. Använd if
när du behöver utföra olika kodgrenar.
Leave a Reply