Wie definiert man eine Variable nur wenn nicht definiert? Die Prüfung scheint einfach genug, aber dann der Block Teil soll wie folgt aussehen:Javascript-Variable, definieren, wenn nicht definiert
if (typeof PersonalDataForm !== "undefined") {
alert("foo defined!");
} else {
var foo = {};
}
Nun, wenn ich meine JS weiß, wird diese var foo Anweisung in var foo
am Anfang der Funktion getrennt erhalten Bereich und foo = {}
innerhalb des Blocks selbst, weil JS Blockdefinitionsbereich variable Definition fehlt. Es wird also immer undefiniert sein, oder?
Ein Lauf dieses Codes beweist es (er druckt immer „foo undefined“):
var foo = {};
function checkFoo() {
if (typeof foo == "undefined") {
console.log("Foo undefined");
var foo = "default";
} else {
console.log("Foo defined");
}
}
checkFoo();
console.log(foo);
Ein interessanter Fall für diese mit der Deklaration einer persönlichen „Bibliothek“ sein könnte, die mit Beginn des Einsatzes:
Wenn es nicht bereits definiert ist, wird in diesem Fall ein Fehler ausgegeben.
'foo = foo || "Standard"? –
@ kyll was ist, wenn der Wert von foo ** falsch ist **? – xDaizu
Ah, richtig. 'foo = typeof foo! == 'undefiniert'? foo: 'Standard'. Aber es wird langweilig zu lesen. Und natürlich scheitert es, wenn der Wert von "foo" nicht definiert ist. Der letzte Weg, es zu tun, könnte sein, 'foo' zu versuchen und zu verwenden, um zu sehen, ob dort ein' ReferenceError' geworfen wird, denke ich. –