Gå til innhold

Hva er eval()?


Anbefalte innlegg

Videoannonse
Annonse
  • 1 år senere...
Gjest Slettet-IHWlGMJn

Lurer på det samme. Har som leaf gjorde, søkt etter det, men skjønner fortsatt ikke helt hva som faktisk skjer...

 

Hva brukes egentlig eval til? Og javascript.. det har da ikke noe med det å gjøre?

Endret av Slettet-IHWlGMJn
Lenke til kommentar

Eval is Evil!

 

Eval skal unngås så langt det er mulig. Eneste stedet da jeg bruker det er når jeg skal parse JSON strenger over til JS objekter/arrayer. Dvs, selv da bruker jeg det ikke direkte; jeg bruker en ferdigskrevet parser som først sjekker strengen inn og ut før eval blir brukt.

Eval er ineffektivt og tregt og gjør koden mindre sikker. Det blir på nett mange steder omtalt:

 

The 'eval' method, and related constructs such as 'new Function', are extremely wasteful. They effectively require the browser to create an entirely new scripting environment (just like creating a new web page), import all variables from the current scope, execute the script, collect the garbage, and export the variables back into the original environment. Additionally, the code cannot be cached for optimisation purposes. eval and its relatives should be avoided if at all possible.
(http://userjs.org/help/tutorials/efficient-code#evalevil)

 

In the majority of cases, eval is used like a sledgehammer swatting a fly -- it gets the job done, but with too much power.  It's slow, it's unwieldy, and tends to magnify the damage when you make a mistake.  Please spread the word far and wide: if you are considering using eval then there is probably a better way.  Think hard before you use eval.
(http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx)

 

The eval function is the most misused feature of JavaScript. Avoid it.
(http://javascript.crockford.com/code.html) Endret av luxus
Lenke til kommentar

Funksjonen eval kan brukes til så mangt, mellom annet til dette:

 

<html>
<head>
</script>
</head>
<body>
<textarea cols = 20 rows = 10 name = felt id = felt></textarea><br>
<input type = button onclick = "eval(felt.innerText)"; value = Utfør>
</body>
</html>

Kjør html-fila og skriv f.eks. følgende inn i text-feltet:

 

var x = 25;
var y = 77;
var z = x * y;
alert (z);

 

Klikk så på Utfør-knappen. Du ser at med eval kan du mellom annet få en avansert kalkulator på websida di. Prøv med mer kompliserte regneuttrykk!

Lenke til kommentar

Ser at du har fått noen svar allerede, men jeg slenger meg på likevel.

 

Eval er en funksjon som evaluerer (eller kjører) koden du sender inn som parameter.

 

Følgende linje vil åpne en alert-boks med tallet 3:

 

var a = 1;
alert(eval('a + 2'));

 

Følgende kode vil også åpne en alert-boks med tallet 3:

 

var a = 1;
eval('a = a + 2; alert(a)');

 

Første kodesnutt viser at eval() kan returnere en verdi, basert på et funksjonsuttrykk, og andre kodesnutt viser at eval() også kan KJØRE kode.

 

Som en annen i denne tråden har nevnt, så benyttes eval() ofte til f.eks. Ajax. På den måten at man sender en XMLHTTPRequest til en server, som så sender en streng med JavaScript-kode tilbake. Denne strengen kjører man da med eval()-funksjonen.

 

Det at eval() kan KJØRE kode, er nok til at mange betrakter funksjonen som direkte usikker. Nå er det jo ikke så fryktelig mye galt man kan få til med JavaScript pga diverse begrensninger i de forskjellige browserne, men jeg kan langt på vei forstå den sunne skepsis enkelte likevel har.

 

Mange mener at bruken av eval() er et tegn på dårlig design, det vil si at man prøver å løse en oppgave på feil måte. eval() kan i mange tilfeller spare deg for mange kodelinjer, men du får til gjengjeld kode som kan være vanskelig å vedlikeholde, og ikke minst debugge.

 

Hilsen

 

Werner

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...