Autor | Zpráva | ||
---|---|---|---|
SeparateSK Profil |
Dobrý deň, chcel by som vedieť aký je rozdiel medzi tým, keď napíšem: if(!funkcia(hodnota)) a if(funkcia(hodnota)!==true).
Príklad: <script> function ret(c){ if(c==1) return true; else return false; } if(ret(1)!==true)alert("FALSE"); </script> <script> function ret(c){ if(c==1) return true; else return false; } if(!ret(1))alert("FALSE"); </script> |
||
finchCZ Profil |
#2 · Zasláno: 23. 2. 2012, 21:00:20
Řekl bych, že je to jen o zvyku co použiješ. Někomu vyhovuje to, jinému ono, ale možná trochu přehlednější (u velkých projektů) je první možnost. Plus máš tam chybičku -> nemá být
if(ret(1)!==true)alert("FALSE"); ale if(ret(1)!= true)alert("FALSE"); |
||
DJ Miky Profil |
#3 · Zasláno: 23. 2. 2012, 21:07:59
finchCZ:
Nemá, !== skutečně existuje.
if(!funkce()) má stejný význam jako if(funkce() != true) .
Operátory ekvivalence ( === a !== ) kontrolují navíc i datový typ. Např.:
if("2" == 2) // projde if("2" === 2) // neprojde if(1 == true) // projde if(1 === true) // neprojde |
||
Tori Profil |
#4 · Zasláno: 23. 2. 2012, 21:08:04
SeparateSK:
Jestli se nepletu, tak při if (!promenna) se hodnota proměnné nejdřív přetypuje na logickou a poté neguje, takže to víceméně odpovídá porovnávání if (promenna != true) .
|
||
weroro Profil |
Zdravím
(!==) znamená, že sa nezhoduje, čo nie je to isté ako klasická negácia (!) ak by sme napr. tento zápis použili pri číselných hodnotách, tak je tam rozdiel: var a = 0; if (!a) { alert ("a sa nerovná nule"); } else { alert ("a sa rovná nule"); } var a = 0; if (a !== 0) { alert ("a sa nerovná nule"); } else { alert ("a sa rovná nule"); } // edit DJ Miky: ma predbehol a napísal to krajšie :) Ale, keď tak premýšľam, tak toto if("2" == 2) v JS neprejde
|
||
finchCZ Profil |
#6 · Zasláno: 23. 2. 2012, 21:17:31
aha, dobrá, moje neznalost tohoto
díky za opravu |
||
Tori Profil |
#7 · Zasláno: 23. 2. 2012, 21:24:14
|
||
weroro Profil |
#8 · Zasláno: 23. 2. 2012, 21:54:15
O.o Pardon. Bola to iba nesprávna dedukcia, keďže som bol v tom, že JS je typovo založený.
|
||
Radek9 Profil |
weroro:
Ne, JS je slabě typový. Tzn., že se při běžném porovnání snaží přetypovávat. Takže všechno toto bude platit: //Logické hodnoty ""==0 0==false ""==false null==false 1==true //Čísla a stringy 2=="2" 3==" 3 " Při použití ekvivalence ale nikoli. |
||
Časová prodleva: 14 let
|
0