Struppi: Position eines div herausfinden

Beitrag lesen

In dem Falle musst du die Datentypen anpassen, d.h. entweder mit parseInt oder parseFloat arbeiten, oder einfach den Wert mit 1 multiplizieren, dann wird automatisch der Typ angepaßt.

Wie meinst du das?
(x+ y)*1   ?
Kann ich eigentlich auch x -(-y) benutzen? Das funktioniert nähmlich.

Ja, ist wahrscheinlich sogar schneller.

Nein ist es nicht. Du kannst gibt JS Code ein, der eine Berechnung darstellt, aber du kannst genauso gut "alert('1')" eingeben
Ist alert('1') eine Berechnung?

Gegenfrage: Ist 1+2 denn keine Berechnung?

Klar und es ist JS Code.

Wenn also etwas wie "alert('1')" eingegeben wird, wird es also ausgeführt bei anderem wird einfach versucht die Eingabe umzuwandeln.
So verstehe ich zumindest diesen Satz.

Nein, es wird einfach der JS Code ausgeführt 1 + 2 ist JS Code

"1+2" ist aber kein JS-Code und rechnet eval() es aus.

Doch es ist JS code.

alert('1+2') -> gibt '1+2' aus
alert(eval('1+2')) -> führt '1+2' aus und gibt das Ergebniss zurück
alert(('alert("1"')) -> gibt "alert("1")" aus
alert(eval('alert("1"')) -> gibt "1" aus und undefined (der Rückgabewert von alert('1')).

Und selbst wenn es so gewesen wäre wie du es dachtest, was sollte der Vorteil von:

x = eval('1+2');

gegenüber:

x = 1 + 2;

sein?

und wenn du dir den Zeitaufwand mal ausgeben läßt:
var t1, t2;

c = 10000;
alert("Start ohne eval()");
t1 = new Date();
while( c--)var x = 1 + 2;
t2 = new Date();

alert('Zeit:' + (t2 - t1) );

c = 10000;
alert("Start eval()");
t1 = new Date();
while( c--)var x = eval('1 + 2');
t2 = new Date();
alert('Zeit:' + (t2 - t1) );

es ist bei mir ca. zehnmal so langsam.

Struppi.