Moin,
Außerhalb eines Funktionskörpers ist es egal, ob ich
var a = 3
odera = 3
schreibe. Es gibt Unterschiede, die aber _rein für die praktische Verwendung_ irrelevant sind. Kann man schön an folgendem Beispiel sehen:
var xx;
function foo() {
xx = 4;
var yy = 6;
}
xx = 2;
yy = 3; // nicht deklariert
console.log(xx, yy); // Ausgabe: 2 3
console.log (window.xx, window.yy) // Ausgabe: 2 3
// Erst in Funktionen gibt es einen Unterschied
foo()
console.log(xx, yy); // Ausgabe: 4 3
console.log (window.xx, window.yy) // Ausgabe: 4 3
> In Zukunft wird es möglich sein, auch außerhalb von Funktionen einen eigenen Geltungsbereich festzulegen
Danke für deine Ausführungen. Das war mir so nicht bewusst.
> Aber weshalb sollte man es darauf ankommen lassen, wenn die Optimierung derart einfach ist? Für alle Fälle, in denen das Array nur durchlaufen und nicht modifiziert wird, setze ich einmalig eine Variable und nutze diese.
[...]
> Ja. Aber man legt sich eine solche Hilfs-Funktion üblicherweise zu, um sie dann generell projektübergreifend verwenden zu können. Und spätestens dann kann es diese Probleme geben.
Das stimmt natürlich. Die globalere Denkweise fehlt mir bei Javascript etwas, weil ich, wenn ich überhaupt Javascript genutzt habe, bisher für jede Seite eigens angepasste Skripte verwendet habe (und das auch nur sporadisch).
> In Javascript ist alles ein Objekt (außer den „Primitives“ wie Zahlen, Strings, true, false,..) ;)
> inArray ist hier genauso ein Funktions-Objekt, wie es auch bei `function inArray() {}`{:.language-javascript} eines ist. Insofern ändert sich an der Verwendung absolut nichts.
Ja. Klassenlose Objektorientiertheit, hab ich irgendwo gelesen. Das soll wohl in der Form nur selten der Fall sein; ich finde das ganz angenehm.
> array() gibt es in JS nicht, das war PHP ;)
Wiedermal mit der Syntax gepatzt^^ Es müsste natürlich
`haystack = new Array("foo", "bar", "fuzz", "test");`{:.language-javascript}
heißen. Oder gibt es da auch eine modernere Schreibweise?
Grüße Marco