Autor | Zpráva | ||
---|---|---|---|
jouza Profil |
Zdravím, začínám s js, a na webu jsem našel tento jednoduchý kod, jen bych se chtěl zeptat, proč tam musí být ty zvýrazněné závorky, jaký mají účel ?
Díky var d = new Date(); if ((d.getHours() >= 5) && (d.getHours() <= 9)) document.write("Dobré ráno"); else if ((d.getHours() >= 10) && (d.getHours() <= 11)) document.write("Dobré dopoledne"); else if ((d.getHours() == 12)) document.write("Dobré poledne"); else if ((d.getHours() >= 13) && (d.getHours() <= 17)) document.write("Dobré odpoledne"); else if ((d.getHours() >= 18 && (d.getHours() <= 21))) // tu to je celé nějaké divné, (ty závorky) document.write("Dobré odpoledne"); else document.write("Dobrou noc"); |
||
juriad Profil |
#2 · Zasláno: 6. 7. 2016, 14:58:30
Syntaxe konstrukce if vyžaduje podmínku obalenou závorkami:
if (podmínka) příkaz V tvém případě je podmínka: (d.getHours() >= 5) && (d.getHours() <= 9) d.getHours() >= 5 && d.getHours() <= 9 |
||
jouza Profil |
Díky za rychlou odpověď, vím, že u příkazu
if se používá tato syntaxe if(podmínka) příkaz
proto mě tam překvapila ta jedna závorka navíc, a u toho "Dobré odpoledne", tam už mi ty závorky nedávaj žádný smysl .. var d = new Date(); if (d.getHours() >= 5) && (d.getHours() <= 8) document.write("Dobré ráno"); else if (d.getHours() >= 8) && (d.getHours() < 12) document.write("Dobré doledne"); else if (d.getHours() >= 12) && (d.getHours() <= 17) document.write("Dobré odpoledne"); else if (d.getHours() >= 17) && (d.getHours() <= 23) document.write("Dobrý večer"); else document.write("dobrou noc"); Takhle jsem si to zkoušel napsat já, ale moc to nefunguje. |
||
xROAL Profil |
#4 · Zasláno: 6. 7. 2016, 15:44:24
jouza:
if (d.getHours() >= 5 && d.getHours() <= 8) if (d.getHours() >= 5) && (d.getHours() <= 8) (prvá zvýraznená zátvorka ukončí IF)
|
||
jouza Profil |
Díky, ale popravdě moc mi to nepomohlo, všude je něco jiného ...
if (d.getHours() >= 5 && d.getHours() <= 8) //#1 if ((d.getHours() >= 5) && (d.getHours() <= 9)) //#2 if ((d.getHours() >= 18 && (d.getHours() <= 21))) //#3 Takže správně to je if(podmínka && podmínka) příkaz chápem to už správně ?
|
||
TomášK Profil |
#6 · Zasláno: 6. 7. 2016, 16:08:15
Správně je
if (podmínka) příkaz . Podmínka může být:
- fakt (např. true )
- výraz vracející podmínku (např. 1 == 1 )
- složená (např. podmínka && podmínka )
- podmínka v závorkách (např. (podmínka) )
- ?možná jsem na něco zapomněl Pomocí těchto pravidel jde vytvořit libovolně složitou podmínku, která jde umístit do ifu. d.getHours() >= 5 && d.getHours() <= 8 (d.getHours() >= 5 && d.getHours() <= 8) (((((d.getHours() >= 5) && d.getHours() <= 8)))) |
||
juriad Profil |
#7 · Zasláno: 6. 7. 2016, 16:08:48
První možnost používá minimální možný počet závorek.
Druhá možnost obalila porovnání závorkami: if ((d.getHours() >= 5) && (d.getHours() <= 9)) //#2 if ((d.getHours() >= 18 && (d.getHours() <= 21))) //#3 Vezmi si to jako aritmetiku, také můžeš použít závorky, ale ve všech níže zmíněných připadech je to to samé: (1+2)+(3+4) = (1+2+3+4) = (1+(2+(3+4))) = 1+((2)+(3+4)) = ((1)+(2+((3)+4))) V JS má operátor porovnání větší prioritu než &&; porovnání tedy v aritmetickém výrazu hraje roli *, && hraje roli +: A * B + C * D //#1 (A * B) + (C * D) //#2 (A * B + (C * D)) //#3 Jiný význam by ta podmínka měla při odlišném uzávorkování, například: (A * (B + C * D)) |
||
jouza Profil |
Díky už je mi to jasnější, jen bych se chtěl ještě zeptat. Podle toho co jste psali, by mi můj kod měl fungovat ne ? Je to na principu
(A * B) + (C * D) ne ?
xROAL: if (d.getHours() >= 5 && d.getHours() <= 8) > if (d.getHours() >= 5) && (d.getHours() <= 8) (prvá zvýraznená zátvorka ukončí IF)
Tak proč mi to teda nejde ? pro přehlednost ho tu hodím, ještě jednou: var d = new Date(); if (d.getHours() >= 5) && (d.getHours() <= 8) document.write("Dobré ráno"); else if (d.getHours() >= 8) && (d.getHours() < 12) document.write("Dobré doledne"); else if (d.getHours() >= 12) && (d.getHours() <= 17) document.write("Dobré odpoledne"); else if (d.getHours() >= 17) && (d.getHours() <= 23) document.write("Dobrý večer"); else document.write("dobrou noc"); Když kod poupravím podle xROAL, tak mi to funguje Myslím, že už to mám, to buď musím celé ještě obalit do závorek if ( (d.getHours() >= 5) && (d.getHours() <= 8) ) document.write("Dobré ráno"); a nebo tak jak říkal roal, ale čekal bych, že to půjde i takhle, jak to mám, ale nejde |
||
Časová prodleva: 9 let
|
0