Ich würde gerne wissen, warum sich jsLint beschwert, dass beim Definieren einiger Variablen wie dieser möglicherweise eine Variable verloren geht:

var foo = bar = {};

Es heißt, ich könnte bar lecken.

Meine Vermutung ist, dass bar eine globale Variable ist. Wie kann ich dann foo und bar zuweisen, um in einer Zeile auf dasselbe Objekt zu zeigen? JavaScript lässt mich nicht schreiben:

var foo = var bar = {};

Oder ist das Problem etwas anderes?

1
Sung Cho 12 Aug. 2015 im 11:07

3 Antworten

Beste Antwort

Der Grund, warum es sich über das "Auslaufen einer Variablen" beschwert, ist, dass Sie nur die lokale Variable foo deklarieren. bar wird nicht deklariert, sondern nur zugewiesen, sodass eine globale Variable erstellt wird. Ihre Aussage entspricht:

var foo = (bar = {});

Das ist die Abkürzung für:

bar = {};
var foo = bar;

Auf diese Weise können Sie sehen, dass die Variable bar nicht deklariert ist. Wenn Sie mehrere Variablen in einer einzelnen var - Anweisung deklarieren möchten, müssen Sie sie durch Kommas trennen:

var bar = {}, foo = bar;

Oder Sie können sie als separate Anweisungen schreiben:

var bar = {};
var foo = bar;

Sie können auch die Erklärungen und Zuordnungen trennen:

var foo, bar;
foo = bar = {};
2
Barmar 12 Aug. 2015 im 08:25

Der beste Ansatz wäre:

var foo = {} , bar = {};

Aber foo und bar würden sich auf zwei verschiedene Objekte beziehen.

Wenn Sie möchten, dass sie sich auf dasselbe Objekt beziehen, dann:

var foo = {}, bar = foo;
2
Beri 12 Aug. 2015 im 08:11

Sie haben 2 Möglichkeiten:

var foo = {},
    bar = {};

Oder:

var foo, bar;
foo = bar = {};

Der erste erstellt einzelne Objekte für foo und bar.
Im zweiten Beispiel zeigen sowohl foo als auch bar auf das gleiche Objekt.

Sie können nicht (/ sollten es nicht versuchen) deklarieren und mehrere Variablen mit einer einzigen var Anweisung, und a zuweisen Einzelobjektliteral in einer Zeile. Dann deklarieren Sie einfach mehrere Variablen, die auf dasselbe Objekt verweisen.

2
Cerbrus 12 Aug. 2015 im 08:11