| 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