ugrás a tartalomhoz

eval és névtelen objektum JSben

zzrek · 2007. Nov. 5. (H), 21.47
Sziasztok!

Ez rendben megy:

alert(eval("[{x:1,y:2},3]")[0].x)
Meg ez is:

alert(eval("a={x:1,y:2}").x)
De ez nem ("invalid label" hiba):

alert(eval("{x:1,y:2}").x)
Az eval nem hajlandó névtelen objektumot értékként visszaadni, vagy kiértékelni(?). Miért? Van-e valami trükk, hogy mégis visszaadjon?
(Firefoxban próbáltam)

Köszi a tippeket.
 
1

na, jó..

zzrek · 2007. Nov. 5. (H), 21.58
Bocs, második felindulásomban már sikerült kigugliznom valamit, így már jó:

alert(eval("({x:1,y:2})").x)
...vagyis zárójelezni kell. Mindenesetre furcsa, hogy anélkül nem ment. :-? Azért ha valaki egyszerűen megindokolja, hogy miért kell ez, ez érdekelne, köszi.
2

azért mert, csak

toxin · 2007. Nov. 5. (H), 23.14
lásd:
(function(){alert('foo');})()
ez miért ilyen ? , de ha nem tetszik még mindig ott van a
new Function("return " + "{x:1,y:2}")().x;
üdv Csaba