You don't know js(up & going)
Download 424.95 Kb. Pdf ko'rish
|
You don\'t know JS(up & going)
- Bu sahifa navigatsiya:
- _________________________________________________________________________________
_________________________________________________________________________________
Заметьте, что `c` не доступна внутри `bar()`, потому что она объявлена только внутри внутренней области видимости `baz()` и `b` не доступна в `foo()` по той же причине. Если вы попытаетесь получить доступ к значению переменной в области видимости, где она уже недоступна, вы получите `ReferenceError`. Если вы попытаетесь установить значение переменной, которая еще не объявлена, все либо закончится тем, что переменная создастся в самой верхней глобальной области видимости (плохо! , либо получите ошибку в зависимости от "строгого режима" (см. "Строгий режим"). Давайте взглянем: _________________________________________________________________________________ function foo() { a = 1; // `a` формально не объявлена } foo(); a; // 1 — упс, автоматическая глобальная переменная :( _________________________________________________________________________________ Это очень плохая практика. Не делайте так! Всегда явно объявляйте свои переменные. В дополнение к созданию объявлений переменных на уровне функций, ES6 *позволяет* вам объявлять переменные, принадлежащие отдельным блокам (пара `{ .. }`), используя ключевое слово `let`. Кроме некоторых едва уловимых деталей, правила области видимости будут вести себя точно так же, как мы видели в функциях: _________________________________________________________________________________ function foo() { var a = 1; if (a >= 1 { let b = 2; while (b < 5 { let c = b * 2; b++; console.log( a + c ); } } } foo(); // 5 7 9 _________________________________________________________________________________ Из-за использования `let` вместо `var`, `b` будет принадлежать только оператору `if` и следовательно не всей области видимости функции `foo()`. Точно так же `c` принадлежит только циклу `while`. Блочная область видимости очень полезна для управления областями ваших переменных более точно, что может сделать ваш код более легким в обслуживании в долгосрочной перспективе. **Примечание:** Более детальная информация об области видимости есть в книге *Область видимости и замыкания* этой серии. См. книгу *ES6 и за его пределами* этой серии, чтобы узнать больше о блочной области видимости `let`. Download 424.95 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling