Область значения и область определения функций: В чем разница между областью определения и областью значения функции?

100 ballov.kz образовательный портал для подготовки к ЕНТ и КТА

VMWare – это IT-решение для организации облачных вычислений и виртуализации. Компания VMware была основана в 1998 году, после чего, в 2004 году, она стала собственностью корпорации EMC. Спустя двенадцать лет EMC была поглощена более крупной компанией Dell Technologies. Основой технологии виртуализации VMware является фирменный гипервизор ESX/ESXi с архитектурой x86.

  

Для работы виртуализации на основную машину устанавливается так называемый гипервизор – ПО, позволяющее запускать несколько независимых виртуальных машин на одном компьютере и контролирующие аппаратные ресурсы. На каждой такой машине может быть установлена собственная операционная система, поверх которой устанавливаются пользовательские приложения.

Виртуализация серверов VMware включает: программное обеспечение для хранения информации, программы для дата-центров, средства обеспечения безопасности и управления сетями.   

Сеть и безопасность

Для обеспечения высокого уровня безопасности информации и виртуальных сетей используется программный продукт VMware NSX, который сетевые администраторы используют для разработки и настройки коммутаторов и виртуальных сетей. Программное обеспечение развертывается поверх гипервизора, что дает возможность создать несколько виртуальных сетей на основе одной физической.

VMware vRealize Network Insight – инструмент администраторов для проверки работоспособности NSX и планирования микросегментации. Кроме того, данное программное обеспечение анализирует ошибки в пользовательском интерфейсе, что позволяет специалисту эффективно находить и устранять неполадки в среде NSX.

Персональный рабочий стол

Запуск нескольких виртуальных машин на одной рабочей машине с операционной системой Linux и Windows возможен при помощи продукта Workstation. Для операционной системы Mac используется программное обеспечение Fusion.  

Управление облаком

Гибридные облака могут создаваться и управляться пользователями при помощи комплекса приложений vRealize Suite, который включает в себя инструменты для управления затратами, автоматизации дата-центра, централизованного ведения журналов, мониторинга.

Администраторы используют это ПО для развертывания виртуальных машин на нескольких физических или виртуальных серверах и для управления ими с единого интерфейса.

Выводы 

В данном материале были рассмотрены далеко не все составляющие VMware. Для подробного рассмотрения принципа работы необходимо обратиться к технической документации на официальном сайте. В завершение, рассмотрим основные преимущества технологии: 

  • высокий уровень безопасности, благодаря модели нулевого доверия;
  • простота в управлении дата-центром;
  • повышение гибкости и эффективности систем центра обработки данных;
  • оптимальное предоставление ресурсов и приложений.

VMware все чаще используется предпринимателями после перехода на облачную и гибридную IT-инфраструктуру. 

 

Объяснение всех 4 областей действия JavaScript

Если вы написали хотя бы одну строку кода JavaScript, значит, вы использовали одну из четырех областей действия JavaScript, даже не подозревая об этом. Эти различные уровни области действия определяют, как будет работать ваш код, насколько легко ваш код будет писать/изменяться, а также многие другие факторы вашего кода, поэтому крайне важно знать все нюансы каждой отдельной области.

В этой короткой статье я расскажу вам, что такое каждый уровень области видимости, как они взаимодействуют с вашим кодом и что вы можете сделать с этими знаниями, чтобы писать более чистый код.

Если вы предпочитаете учиться визуально, посмотрите видеоверсию этой статьи.

Что такое объем?

Первый вопрос, который нам нужно решить, это что такое масштаб. В JavaScript и практически в любом другом языке программирования ваш код выполняется в рамках заданной области. Эта область определяет, к каким переменным имеет доступ ваш код, как новые переменные будут взаимодействовать с остальной частью вашего кода и некоторые другие вещи. Лучший способ представить область действия — это раздел, который поможет вам отделить разные части кода друг от друга.

В приведенном выше примере у нас есть простой код, который определяет переменную вне функции и внутри функции. Затем мы записываем обе переменные в консоль как внутри, так и вне функции. Это прекрасно работает внутри функции, но вне функции наш журнал выдает ошибку, поскольку у нас нет доступа к внутренней переменной вне области действия функции.

В этом примере используются две из четырех областей видимости в JavaScript для разделения нашего кода таким образом, чтобы только определенные части кода имели доступ к определенным переменным. Это основная причина существования разных уровней области видимости, поэтому давайте сейчас рассмотрим эти разные области видимости.

Уровни охвата

Четыре различных уровня охвата:

  1. Глобальный охват
  2. Объем модуля
  3. Блочный прицел
  4. Область действия

Может показаться, что это слишком много для отслеживания, но на самом деле вы, вероятно, будете использовать область модуля и блока для 95% всего кода, который вы пишете, поэтому отслеживать его немного легче. Однако это не означает, что вы должны игнорировать другие области видимости, так как важно понимать, как они работают.

Глобальная область действия

Для начала мы поговорим о самой простой области действия, чтобы понять, какую область действия большинство разработчиков используют для всего своего кода, поскольку она просто игнорирует все ограничения, налагаемые другими областями. Чтобы понять глобальную область видимости, представьте, что у меня есть следующий HTML/JS.

Этот простой пример использует глобальную область видимости для определения своих переменных. Глобальная область действия работает так: каждый раз, когда вы определяете переменную на верхнем уровне файла (вне любой функции/фигурных скобок), она считается глобальной областью действия и к ней можно получить доступ ВЕЗДЕ во всем приложении. Этот глобальный доступ поначалу упрощает написание кода, поскольку вам не нужно беспокоиться о том, что переменные блокируются разными областями, но по мере того, как вы начинаете писать более сложный код, управлять этим быстро становится сложно. Эта проблема еще хуже, когда у вас есть несколько файлов.

Как вы можете видеть в приведенном выше примере, мы определили переменную в script-1.js и можем использовать эту переменную в script-2.js . Это потому, что переменная из script-1.js определяется глобально и может использоваться ВСЕГДА в вашем коде. Из-за этой особенности глобальной области видимости я стараюсь никогда не использовать глобальную область видимости ни в одном из своих приложений. Невероятно сложно отслеживать глобальную область действия по мере роста вашего приложения, поэтому я предпочитаю область действия модуля.

Область действия модуля

Область действия модуля очень похожа на глобальную область действия, но с одним небольшим отличием. Второстепенные переменные области доступны только в файле, в котором вы их определяете. Это означает, что их нельзя использовать в других файлах, что идеально, когда вы пытаетесь мысленно отслеживать все. Чтобы войти в область модуля, вам нужно использовать type="module" в тегах скрипта. Это гораздо больше, чем просто изменение области действия, поэтому, если вы не знакомы с модулями ES, вам следует ознакомиться с моим полным руководством по модулям ES.

С помощью этого единственного изменения мы устранили самую большую проблему, связанную с глобальной областью действия переменных, доступной в каждом файле, сохранив при этом преимущества возможности использования переменной в любом месте файла, в котором она определена. Из-за того, что область действия этого модуля является одной из двух областей видимости, которые я использую постоянно.

Область блока

Другая основная область, которую я постоянно использую, — это блочная область. Область блока — одна из самых простых для понимания областей, поскольку она соответствует фигурной скобке {} . По сути, каждый раз, когда у вас есть код внутри фигурных скобок, он считается собственной областью действия блока. Это означает, что такие вещи, как функции, операторы if, циклы for и т. д., создают собственную область действия блока.

В этом примере определяются две отдельные области блока. Каждая область блока определяется как код между фигурными скобками, и каждый блок имеет доступ ко всем переменным, которые находятся между фигурными скобками, кроме 9.0037 NOT в другом наборе фигурных скобок, а также во всех переменных его родительской области.

В нашем случае у нас есть два блока: функция test и оператор if . Наша область test имеет доступ ко всем переменным в функции test , которые не вложены в другой набор фигурных скобок, что означает, что у нее есть доступ к переменной funcVar . Наша тестовая область также будет иметь доступ к любым глобальным/модульным переменным уровня области, поскольку они являются родителями тест прицел.

Наша вторая область — это оператор if , и эта область имеет доступ к ifVar , а также ко всему, к чему имеет доступ область test , поскольку область test является родительской областью области if .

Важный вывод о блочной области: каждый раз, когда у вас есть фигурные скобки, вы создаете новую блочную область, которая имеет доступ ко всем областям, внутри которых она находится, но ни к одной из областей внутри нее. Это внутреннее/внешнее правило на самом деле верно для всех областей. Любая область будет иметь доступ к областям, в которых она находится, но у нее не будет доступа к областям внутри нее.

Вы даже можете добавить фигурные скобки в любом месте вашего кода, чтобы создать область видимости. Это не то, что я делаю часто, но это может быть полезно.

Область действия функции

Последняя область действия — это область действия функции, и мы надеемся, что вам никогда не придется об этом беспокоиться, поскольку она относится к ключевому слову var . Переменные, определенные с помощью ключевого слова var , имеют область действия на уровне функции, а не на уровне блока, что означает, что они заботятся только о фигурных скобках функции.

Этот код точно такой же, как код из примера уровня блока, но мы используем var вместо const для определения наших переменных. Вы увидите, что в этом примере наш код будет работать просто отлично, потому что ключевое слово var игнорирует область уровня блока, поэтому даже если ifVar определено в нашем блоке if , это не имеет значения для области действия функции.

Честно говоря, это довольно неинтуитивно, а var как ключевое слово вообще сложно использовать, поэтому я рекомендую никогда не использовать вар . Если вы хотите узнать больше о том, почему мне не нравится var и о различиях между var , let и const , ознакомьтесь с моим полным руководством var vs let vs const.

Несколько переменных с одним и тем же именем

Одна важная вещь, которую нужно понять об этой области видимости, — это то, как она работает, когда у вас есть несколько переменных с одним и тем же именем.

В этом примере у нас есть переменная a , определенная как внутри нашего проверить функцию и внутри нашего блока if . Когда мы выходим из системы и в блоке , если , мы получаем значение и из области , если , а когда мы регистрируем и вне блока , если , мы получаем значение и из области видимости , если . тест прицел.

Основной вывод из этого кода заключается в том, что когда у вас есть две переменные с одинаковыми именами, которые находятся в разных областях, они на самом деле являются двумя совершенно отдельными переменными. Они не имеют ничего общего друг с другом, они никогда не перезаписывают значения друг друга и работают точно так же, как две переменные с разными именами. Единственная разница в том, что если они имеют одно и то же имя, теперь невозможно получить доступ к значению переменной внешней области видимости, поскольку доступ к и всегда будут обращаться к самой доступной внутренней переменной области видимости.

Обычно я стараюсь не использовать одинаковые имена переменных при написании кода, но в некоторых случаях это может упростить написание кода, поэтому иногда это необходимо.

Заключение

Хотя наличие четырех разных областей видимости в JavaScript может показаться запутанным, на самом деле все немного проще, поскольку нас интересуют только две из четырех областей видимости. Понимание того, как работают эти области видимости, также имеет решающее значение для написания хорошего чистого кода.

Область действия переменной во вложенных функциях :: Типы функций (программирование)

Область действия переменной во вложенных функциях :: Типы функций (программирование)
Программирование    

Область действия переменной во вложенных функциях

Область действия переменной — это диапазон функций, которые имеют прямой доступ к переменной для установки, изменения или получения ее значения. Когда вы определяете локальную (т. е. неглобальную) переменную внутри функции, ее область действия обычно ограничивается только этой функцией. Например, подфункции не имеют общих переменных с основной функцией или с другими подфункциями. Это связано с тем, что каждая функция и подфункция хранит свои переменные в отдельной рабочей области.

Как и другие функции, вложенная функция имеет собственное рабочее пространство. Но он также имеет доступ к рабочим областям всех функций, в которые он вложен. Так, например, переменная, которой присвоено значение основной функцией, может быть прочитана или перезаписана функцией, вложенной на любом уровне основной функции. Точно так же переменная, назначенная во вложенной функции, может быть прочитана или перезаписана любой из функций, содержащих эту функцию.

В следующих двух примерах переменная x хранится в рабочей области внешней функции varScope и может быть прочитано или записано всеми вложенными в него функциями.

функция varScope1
x = 5;
гнездо1

   функция гнездо1
      нестфун2

      функция гнездо2
         х = х + 1
      конец
     конец
   конец


конец

3

функция varScope2
NestFun1

   функция NestFun1

      NestFun2

      функция nestfun2
         x = 5;
      конец
   конец
x = x + 1
конец


Как правило, переменная, используемая или определенная во вложенной функции, находится в рабочей области самой внешней функции, которая одновременно содержит вложенную функцию и обращается к этой переменной. Областью действия этой переменной является функция, которой принадлежит это рабочее пространство, и все функции, вложенные на любой уровень внутри этой функции.

В следующем примере внешняя функция varScope3 , нет доступа к переменной x . Следуя только что изложенному правилу, x неизвестно внешней функции и, следовательно, не используется совместно двумя вложенными функциями. На самом деле в этом примере есть две отдельные переменные размером

x : одна в рабочей области функции nestfun1 и одна в рабочей области функции nestfun2 . Когда nestfun2 пытается обновить x , происходит сбой, потому что x еще не существует в этой рабочей области:

Область действия выходных переменных

Переменные, содержащие значения, возвращаемые вложенной функцией, не входят в область видимости внешних функций. В двух показанных здесь примерах тот, что слева, завершается ошибкой в ​​предпоследней строке, потому что, хотя значение из y возвращается вложенной функцией, переменная y является локальной для вложенной функции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *