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 eval u 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 eval u, 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 eval u 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: 14 let
|
0