Ehhhhhm nein
Beispiel
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; var newFunc = new Function("", "alert(b."+a+")"); newFunc();
Hier nicht, oder??
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; var newFunc = function() { alert("b."+a) }; newFunc();
vielleicht erkennst du nun den Unterschied
Noch ein Beispiel:
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; alert(eval("b."+a));
Hier nicht
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; alert("b."+a);
Noch eins:
Hier wird evaluiert:
var a = "eins"; var b = {}; b.eins = "1000"; setTimeout("alert(parseInt(b."+a+"))",10);
Hier nicht
var a = "eins"; var b = {}; b.eins = "1000"; alert(parseInt("b."+a));
Hier noch eins zu einer normaler Funktion mit Parameterübergabe
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "1000"; var newFunc = function(test) { alert(test) }; setTimeout("newFunc(b."+a+")",10);
wird nicht evaluiert
var a = "eins"; var b = {}; b.eins = "1000"; var newFunc = function(test) { alert(test) }; newFunc("b."+a);
Wie kommst du jetzt darauf das für mich alle Funktionen zur eval Familie gehören???
Ich meine die Logik springt einem da doch ganz offensichtlich ins Gesicht ^^
die Funktionen die Code evaluieren gehören zur eval Familie, grade weil sie evaluieren,
ich hab auch nochmal nachgeforscht, cih hab die seite grade nicht zur Hand Poste sie aber dann nochmal
und zwar eröffnen die zur eval Familie gehörenden Funktionen tatsächlich einen neuen thread, eben einen
simultanen so wie auf dieser einen Seite beschrieben, eine neue Instanz der JSEngine muss dafür gestartet
werden egal ob code diese Funktionen Code zum evaluieren enthalten oder nicht, dies wird dann nämlich erst
geprüft, das ist schon so
Beispiel
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; var newFunc = new Function("", "alert(b."+a+")"); newFunc();
Hier nicht, oder??
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; var newFunc = function() { alert("b."+a) }; newFunc();
vielleicht erkennst du nun den Unterschied
Noch ein Beispiel:
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; alert(eval("b."+a));
Hier nicht
var a = "eins"; var b = {}; b.eins = "das ist ein Text"; alert("b."+a);
Noch eins:
Hier wird evaluiert:
var a = "eins"; var b = {}; b.eins = "1000"; setTimeout("alert(parseInt(b."+a+"))",10);
Hier nicht
var a = "eins"; var b = {}; b.eins = "1000"; alert(parseInt("b."+a));
Hier noch eins zu einer normaler Funktion mit Parameterübergabe
Hier wird evaluiert
var a = "eins"; var b = {}; b.eins = "1000"; var newFunc = function(test) { alert(test) }; setTimeout("newFunc(b."+a+")",10);
wird nicht evaluiert
var a = "eins"; var b = {}; b.eins = "1000"; var newFunc = function(test) { alert(test) }; newFunc("b."+a);
Wie kommst du jetzt darauf das für mich alle Funktionen zur eval Familie gehören???
Ich meine die Logik springt einem da doch ganz offensichtlich ins Gesicht ^^
die Funktionen die Code evaluieren gehören zur eval Familie, grade weil sie evaluieren,
ich hab auch nochmal nachgeforscht, cih hab die seite grade nicht zur Hand Poste sie aber dann nochmal
und zwar eröffnen die zur eval Familie gehörenden Funktionen tatsächlich einen neuen thread, eben einen
simultanen so wie auf dieser einen Seite beschrieben, eine neue Instanz der JSEngine muss dafür gestartet
werden egal ob code diese Funktionen Code zum evaluieren enthalten oder nicht, dies wird dann nämlich erst
geprüft, das ist schon so
Zuletzt bearbeitet: