| Autor | Zpráva | ||
|---|---|---|---|
| DarkMeni Profil |
#1 · Zasláno: 10. 7. 2011, 11:29:57
Zadravím, jak by se mohl provést kód uvnitř proměnné?
Vím o tom že to jde evalem, ale četl jsem snad i někde tady na fóru že ho nemam používat a až do dnes nevim proč, ale když ne tak ne, šel by teda tenhle kód provést jinak než použitím eval?
var funct = "nazev_funkce();";
eval(funct);
function nazev_funkce(){
alert("Zpracování...");
}
//nebo:
var funct = "alert('Zpracování...');";
eval(funct);
|
||
| pcmanik Profil |
#2 · Zasláno: 10. 7. 2011, 12:11:25
DarkMeni:
Nejak nechapem vyznam ukladania tych alertov/funkcii do premennych |
||
| Jozin Profil |
#3 · Zasláno: 10. 7. 2011, 12:14:34
DarkMeni:
Zdravím, eval nemáš používat, pokud pro něj není důvod. Začátečníci by se tomuto přístupu měli vyhnout. Říká se tedy, pokud to jde udělat jakkoliv jinak, tak to tak udělej, protože eval-u stačí něco podstrčit a ejhle máme škodlivý kód. |
||
| Witiko Profil |
#4 · Zasláno: 10. 7. 2011, 13:44:46 · Upravil/a: Witiko
DarkMeni:
Ano, šel by provést jinak: alert("Zpracování...");JSON v prohlížečích bez nativní podpory a tvorby JS konzole nemá povětšinou člověk důvod funkci eval() a její obdoby používat.
|
||
| DarkMeni Profil |
#5 · Zasláno: 10. 7. 2011, 14:09:52
Witiko:
„tvorby JS konzole“ Jestli jsem tě dobře pochopil tak se v tomhle případě bez eval neobejdu, že? |
||
| Witiko Profil |
#6 · Zasláno: 10. 7. 2011, 17:38:24
DarkMeni:
Ano, v takovém případě si stěží dokážu představit jiné řešení. |
||
| Darker Profil |
#7 · Zasláno: 10. 7. 2011, 18:46:44 · Upravil/a: Darker
Jozin:
„ejhle máme škodlivý kód.“ V případě javascriptu jde spíš o přehlednost a snadnou kontrolu kódu. Protože stačí do adresního řádku napsat javascript:[..] a ejhle, máme škodlivý kód... DarkMeni: „se v tomhle případě bez eval neobejdu“ var funct =function() {alert('Zpracování...');};
funct();Proměnnou funct můžeš libovolně předávat mezi funkcemi. |
||
| Witiko Profil |
#8 · Zasláno: 10. 7. 2011, 18:52:59
Darker:
Vyjímáš citaci DarkMeni z kontextu. Reagoval na mojí poznámku o tvorbě javascriptové konzole. V takovém případě se skutečně bez evalu stěží obejde.
|
||
| Darker Profil |
#9 · Zasláno: 10. 7. 2011, 19:14:23
Witiko:
Omlouvám se, máš pravdu - špatně jsem se podíval. Konzole bez eval, nebo jeho obdoby skutečně udělat nejde. |
||
| _es Profil |
#10 · Zasláno: 11. 7. 2011, 09:57:55
Darker:
„Konzole bez eval, nebo jeho obdoby skutečně udělat nejde.“ Dajú sa ešte dynamicky vytvárať elementy <script>.
|
||
| Chamurappi Profil |
#11 · Zasláno: 11. 7. 2011, 10:26:08
Reaguji na _es:
Což je v podstatě jen zašmodrchanější obdoba evalu, trpící podobnými nevýhodami.
Reaguji na Darkera: „Konzole bez eval, nebo jeho obdoby skutečně udělat nejde.“ Teoreticky jde napsat celý interpreter JavaScriptu v JavaScriptu. |
||
| _es Profil |
#12 · Zasláno: 11. 7. 2011, 10:49:01
Chamurappi:
„Což je v podstatě jen zašmodrchanější obdoba evalu, trpící podobnými nevýhodami.“ Potom je vlastne obdobou evalu aj: <script>kód</script>
Samozrejme, dynamické pridanie elementu do DOM nie je zadarmo, teda niektoré nedostatky nie sú a niektoré sú voči funkcii eval navyše.
|
||
| Witiko Profil |
#13 · Zasláno: 11. 7. 2011, 12:31:51
_es:
Ano, eval například respektuje kontext ve kterém je spouštěn.
|
||
| _es Profil |
#14 · Zasláno: 11. 7. 2011, 12:46:25
Witiko:
„eval například respektuje kontext ve kterém je spouštěn.“ Čo môže byť aj nevýhoda - pre možnosť napríklad vytvorenia lokálnych premenných je beh JS pre prehliadač horšie optimalizovateľný. |
||
| Darker Profil |
#15 · Zasláno: 11. 7. 2011, 18:18:36 · Upravil/a: Darker
Ve ksutečnosti jsem právě tendenci evalu chovat se podle jeho prostředí v konzoli příliš neuvítal.
Chamurappi: „Teoreticky jde napsat celý interpreter JavaScriptu v JavaScriptu.“ To by bylo něco. Majkl578: Zde už byla též otázka zodpovězena, kde je tvoje mazání? |
||
|
Časová prodleva: 15 let
|
|||
0