Автор оригинала: FreeCodeCamp Community Member.
Кевином Кононенко
Вы когда-нибудь разбили свою клавиатуру разочарования после получения undefined значение снова и снова, пытаясь найти значение переменной?
Или, вы назвали две переменные то же самое после часов и часов кодирования, только чтобы узнать вашу ошибку позже?
Оба эти вопросы могут быть связаны с объемом вашей переменной. Область Определяет, где ваши переменные будут доступны во всем вашем скрипте.
Когда вы правильно охватите свои переменные, вы обнаружите, что ваш код проще читает и отладки для любого Viewer.
Проблема
До обновления ES6 до JavaScript вы можете объявить только переменные с var Отказ С var Не ограничивает объем переменной, вы будете вынуждены догадаться, имел ли переменную глобальную область или локальный объем.
Теперь JavaScript позволяет объявлять переменные с Const и Пусть Отказ Они могут добавить некоторую сложность, но они заставляют ваш код намного проще понять.
К сожалению, большинство учебных пософонов описывают эти области как коробки в рамках коробок или одностороннего стекла. Я не знаю о вас, но я не трачу много времени на упаковках в рамках коробок или смотрите через слои одностороннего стекла!
Я думаю, что у меня есть лучший путь. Область применения может быть объяснена, глядя на то, как работают международные законы, национальные законы и местные законы. Итак, вам нужно только понять, что разные уровни правительства существуют, чтобы узнать о различных уровнях объема. Вот быстрый превью, а потом мы попадем в него!
Я собираюсь попробовать избежать каких-либо законов, которые относятся к текущим политическим вопросам.
Глобальный объем (Организация Объединенных Наций)
Переменные, определенные на верхнем уровне вашего сценария, имеют глобально находящиеся на уровне. Они доступны для всех функций. Они называются глобальный Переменные.
Они похожи на международные законы. Имейте в виду, что довольно сложно пройти законы, что все 193 члены Организации Объединенных Наций согласятся. Таким образом, эти законы должны охватывать только самые фундаментальные права человека. Организация Объединенных Наций не участвует в политике наркотиков или религиозных законов, которые могут касаться отдельных стран. Два примера могут быть:
«Пытки запрещены».
«Химическое оружие запрещено».
Это означает, что эти законы будут действовать для любой страны, которая является частью Организации Объединенных Наций, а также для любого государства или провинции в этих странах.
Вот версия этих законов до ES6.
В ES6 мы можем объявить переменные с Const и Пусть Отказ Const сделает значение переменной неизменной – она не сможет изменять. Пусть не буду. Я думаю, что эти два фундаментальных прав человека обязательно должны быть неизменными! Так что это должно быть:
Вы не хотите создавать слишком много глобальных переменных. «Заявление» Глобальный охват означает, что вы определяете слишком много переменных, которые являются глобально доступными. С точки зрения программирования, вам трудно отлаживать и поддерживать код, когда вы используете глобальные переменные.
В этой аналогии нет международных законов в возрасте, что люди могут пить алкоголь. Каждая отдельная страна должна определить эти правила. ООН никогда не сможет существовать, если он пытался регулировать питьевые века!
Функциональная область (Соединенные Штаты)
Поскольку законы выше, находящиеся на глобальном масштабе, они доступны в любом месте нашего сценария. И, поскольку они определены с Const , Они неизменны.
Так как насчет законов, которые применяются только в Соединенных Штатах? Одним из примеров является питьевой век, враг студентов колледжа повсюду. Вам должно быть 21 год, чтобы купить алкоголь в Соединенных Штатах.
Должен ли этот возраст быть неизменным или неизменным? Нет. На самом деле, там было Нет универсального закона о питьевом возрасте в США до 1984 года Отказ Это может измениться снова в будущем.
Мы будем использовать Пусть определить этот.
Если мы попытаемся получить доступ к значению питьевой питье за пределами Соединенные Штаты Функция, мы получим ошибку, так как она существует только в Сфера функции Отказ
Просто помните – законы ООН все еще действуют в Соединенных Штатах.
Брекеты похожи на границы страны, в этом случае. Законы действительны только в пределах границ этой страны. Итак, если вы хотите создать Мексика Функция, вы могли бы определить пневматический съемник Опять как 18.
Вот этот код в диаграмме форме.
Область блока (Массачусетс)
Я живу в Массачусетсе, поэтому я решил выбрать на своем собственном состоянии для этого. Есть один уровень областей: Область блока Отказ Область блокировки и функциональные возможности являются оба примерами Местный охват, Поскольку они создают локальные ограничения для определения переменных.
Область блокировки означает, что переменная может быть локальной для набора кронштейнов {}, как Если заявление или для петля. Также нравится функциональная область, переменная действительна только в этих скобках.
В Массачусетсе все бары должны прекратить порцию в 2 утра. Я знаю, я знаю – если вы живете в Европе, это, вероятно, звучит возмутительно. Этот закон действительно варьируется в зависимости от государства. В Нью-Йорке они могут служить до 4 утра.
Во всяком случае, для того, чтобы сделать эту работу в коде, нам нужно определить Если операторы в рамках функции UnedStates. Мы снова будем определить переменную с Пусть потому что эти законы, безусловно, могут изменяться.
Время закрытия Переменная действительна только в пределах Если Блок, в то время как PriTingage действителен в любом месте функции UnitSeates.
Если мы хотим определить отдельное время закрытия для Нью-Йорка, мы можем сделать это, а также из-за Область блока Отказ
Если вы хотите принять меры на основе переменной закрытия, вы теперь можете сделать что-то в каждом блоке.
Вот диаграмма, которая охватывает все это.
Изменение переменной (прохождение нового закона)
Последняя часть. Допустим, вы хотите передать закон, чтобы изменить питьевой век в Соединенных Штатах. Вам необходимо создать функцию, которая сможет изменить переменную питья. Давайте назовем это PassDrikinglaw Отказ
Вам нужно будет создать функцию PassDrikingLaw в функции Соединенных Штатов, потому что она имеет отношение только к США. Там нет глобальных законов о пьянстве.
Также необходимо получить доступ к переменной плиту, которая определила первоначальный возраст. Представьте, что вы хотели изменить питьевой возраст до 18 лет. Вот как вы это сделаете.
Вот почему важно определить переменную во всей области совместимости. Вы бы хотели, чтобы изменения вступили в силу для любого будущего использования питья. И, если вы хотите создать универсальную функцию Passdrikinglaw, она не будет работать с этой структурой.
питьевой век Местный к функции Соединенных Штатов. Вот версия диаграммы.
Призыв к действию
Вам понравилось это? Дайте ему хлопок, чтобы другие могли его открыть. И, если вы хотите получить уведомление, когда я отпускаю будущие учебные пособия, которые используют аналогии, зарегистрируйтесь здесь: