2015-05-05 11 views

Odpowiedz

21

Istnieją strony wpływa na var x = y = 14; dlatego też nie wolno w trybie ścisłym. Mianowicie y staje się zmienną globalną.

Kiedy mówisz

var x = y = 14; 

Jest to odpowiednik

var x; 
y = 14; 
x = y; 

Gdzie x jest zadeklarowana jako zmienna lokalna i y jest tworzony jako zmienną globalną.

Aby uzyskać więcej informacji na temat korzystania z var, aby zadeklarować zmienne, patrz this question. Ponadto warto zauważyć, że ES6 wprowadza the keyword let, który umożliwia zakres zakresu bloków w przeciwieństwie do zakresu poziomu funkcji, który istnieje z var.

Wreszcie, jeśli chcesz przypisać obu zmiennych wartości, każda z następujących zrobi

var x, y; 
x = y = 14; 

var x = 14, 
    y = x; 

var x = 14, 
    y = 14; 

var x = 14; 
var y = 14; 
+0

Ostatni przykład nadal sprawia, że' y' jest globalny, prawda? –

+0

W rzeczywistości, 'var x = y = 14;' W rzeczywistości, 'y = 14; var x = 14; '. Ale myślę, że kolejność nie jest bardzo ważna. W tym wypadku. –

+0

Masz rację. Dzięki @FelixKling. Zmieniono moją odpowiedź, aby odzwierciedlić Twoją poprawkę. – sfletche

7

Yup - nie mieszać deklaracji i zadań.

var x, y; 
x = y = 14; 
Powiązane problemy