@@ -21,7 +21,7 @@ definiowane w jednej *globalnie współdzielonej* przestrzeni nazw.
21
21
22
22
Z każdym odwołaniem do zmiennej, JavaScript przeszukuje w górę wszystkie zasięgi
23
23
dopóki nie znajdzie tej zmiennej. W przypadku, gdy przeszukiwanie dotrze do globalnego
24
- zasięgu i nadal nie znajdzie żądanej nazwy, to wyrzuca błąd ` ReferenceError ` .
24
+ zasięgu i nadal nie znajdzie żądanej nazwy, wyrzuca błąd ` ReferenceError ` .
25
25
26
26
### Zmora globalnych zmiennych
27
27
@@ -35,7 +35,7 @@ Powyższe dwa skrypty **nie** dają tego samego efektu. Skrypt A definiuje zmien
35
35
nazwaną ` foo ` w * globalnym* zasięgu, natomiast skrypt B definiuje ` foo `
36
36
w * aktualnym* zasięgu.
37
37
38
- Jeszcze raz, to wcale nie daje * tego samego efektu* . Nie użycie ` var ` może mieć
38
+ Jeszcze raz, to wcale nie daje * tego samego efektu* . Brak użycia ` var ` może mieć
39
39
poważne konsekwencje.
40
40
41
41
// globalny zasięg
@@ -48,8 +48,8 @@ poważne konsekwencje.
48
48
foo; // 21
49
49
50
50
Pominięcie słowa ` var ` w deklaracji wewnątrz funkcji ` test ` nadpisze wartość
51
- zmiennej globalnej ` foo ` . Mimo że nie wygląda to na początku na duży problem,
52
- posiadanie wielu tysięcy linii kodu w JavaScript i nie korzystanie z ` var `
51
+ zmiennej globalnej ` foo ` . Mimo, że nie wygląda to na początku na duży problem,
52
+ w przypadku kodu, który posiada wielu tysięcy linii, brak ` var `
53
53
wprowadzi straszne i trudne do wyśledzenia błędy.
54
54
55
55
// globalny zasięg
@@ -68,8 +68,8 @@ wprowadzi straszne i trudne do wyśledzenia błędy.
68
68
Zewnętrzna pętla zakończy działanie po pierwszym wywołaniu ` subLoop ` , ponieważ
69
69
` subLoop ` nadpisuje wartość globalnej zmiennej ` i ` . Użycie ` var ` w drugiej pętli
70
70
` for ` pozwoliłoby łatwo uniknąć problemu. Słowo kluczowe ` var ` nie powinno być
71
- ** nigdy** pominięte w deklaracji, chyba że * pożądanym skutkiem* jest wpłynięcie na
72
- zewnętrzny zasięg .
71
+ ** nigdy** pominięte w deklaracji, chyba że * pożądanym skutkiem* jest modyfikacja
72
+ zewnętrznego zasięgu .
73
73
74
74
### Lokalne zmienne
75
75
@@ -150,7 +150,7 @@ W oryginalnym kodzie instrukcja warunkowa `if` zdaje się modyfikować *zmienną
150
150
globalną* ` goo ` , podczas gdy faktycznie modyfikuje ona * zmienną lokalną* - po tym
151
151
jak zostało zastosowane windowanie (hoisting).
152
152
153
- Bez wiedzy na temat podnoszenia ( hoistingu), poniższy kod może sprawiać wrażenie,
153
+ Analizując poniższy kod bez wiedzy na temat hoistingu możemy odnieść wrażenie,
154
154
że zobaczymy błąd ` ReferenceError ` .
155
155
156
156
// sprawdz czy SomeImportantThing zostało zainicjalizowane
@@ -182,19 +182,21 @@ funkcji.
182
182
183
183
Na przykład, kiedy próbujemy odczytać zmienną ` foo ` wewnątrz zasięgu funkcji,
184
184
JavaScript będzie szukać nazwy w określonej kolejności:
185
- 1 . Jeżeli wewnątrz aktualnego zasięgu znajduje się deklaracja ` var foo ` skorzystaj z niej.
186
- 2 . Jeżeli jeden z parametrów fukcji został nazwany ` foo ` użyj go.
187
- 3 . Jeżeli fukcja została nazwana ` foo ` skorzystaj z tego.
188
- 4 . Przejdz do zewnętrznego zasięgu i przejdz do kroku ** #1 ** .
189
185
190
- > ** Uwaga:** Jeżeli jeden z parametrów fukcji został nazwany ` arguments ` , zapobiegnie
191
- > to utworzeniu domyślnego obiektu ` arguments ` .
186
+ 1 . Jeżeli wewnątrz aktualnego zasięgu znajduje się deklaracja ` var foo ` , skorzystaj z niej.
187
+ 2 . Jeżeli jeden z parametrów fukcji został nazwany ` foo ` , użyj go.
188
+ 3 . Jeżeli funkcja została nazwana ` foo ` , skorzystaj z tego.
189
+ 4 . Przejdź do zewnętrznego zasięgu i przejdź do kroku ** #1 ** .
190
+
191
+ > ** Uwaga:** Jeżeli jeden z parametrów fukcji został nazwany ` arguments ` ,
192
+ > nie zostanie utworzony domyślny obiekt ` arguments ` .
192
193
193
194
### Przestrzenie nazw
194
195
195
196
Powszechnym problemem posiadania tylko jednej globalnej przestrzeni nazw jest
196
197
prawdopodobieństwo wystąpienia kolizji nazw. W JavaScripcie, można łatwo uniknąć
197
- tego problemu korzystając z * anonimowych wrapperów* .
198
+ tego problemu korzystając z * anonimowych wrapperów* (inaczej: Immediately-Invoked
199
+ Function Expression - IIFE).
198
200
199
201
(function() {
200
202
// autonomiczna "przestrzeń nazw"
0 commit comments