Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2018, 09:53   #1
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 199
Вопрос Есть js, как скрыть в нем для других js глобальные переменные(доступные только в html к которому подключается)?

Есть js, как скрыть в нем для других js глобальные переменные(доступные только в html к которому подключается)?
dbalor вне форума Ответить с цитированием
Старый 15.06.2018, 14:52   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Создать пространство имён и писать код в нём.

Код:
(function() {
  // тут пишите свой код
})()
Вадим Мошев вне форума Ответить с цитированием
Старый 15.06.2018, 15:33   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
пространство имён
И где тут имя?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.06.2018, 23:27   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Хорошо, быть может, я перепутал термины. Пространство имён организуются с помощью объектов. В качестве примера можно привести Math.
Тем не менее, указанная мной конструкция (самовызывающаяся анонимная функция) изолирует объявленные внутри переменные и функции от глобального пространства имён.
Вадим Мошев вне форума Ответить с цитированием
Старый 16.06.2018, 11:27   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И где тут имя?
Эта самовызывающаяся анонимная функция называется "замыканием". Все переменные и функции, объявленные внутри нее, будут видны только внутри нее. Поэтому это и называется "область видимости" или "пространство имён".
Так что Вадим всё правильно сказал.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 16.06.2018, 11:40   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так неймспейсом это обычно называют когда оно используется как неймспейс (mynamespace.foo()), а не просто любое замыкание.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.06.2018, 00:56   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
Эта самовызывающаяся анонимная функция называется "замыканием"
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
а не просто любое замыкание.
Кстати, помню, когда я однажды собеседовался по JS в одной фирме, мне был задан вопрос "что такое замыкание"?
Если я ничего не путаю, я ответил ему, что это самовызывающася функция:
Код:
(function() {
  // ...
})()
на что мне ответили, что это не имеет никакого отношения к замыканию.

А если путаю, то мой ответ звучал как: "функция, которая сама себя вызывает", из-за чего он мог подумать, что я говорю о рекурсии.
НО, в любом случае, отвечая на этот вопрос, я имел в виду как раз автоматический вызов функции, пример которого привёл выше.

Просто тут заметил, что термин "самовызывающаяся функция" может быть трактован двояко:
1. автоматический вызов функции (вообще, имхо, лучше использовать именно такой термин, когда речь идёт о вызове автоматом);
2. рекурсия (функция тоже сама себя вызывает в своём теле)
Вадим Мошев вне форума Ответить с цитированием
Старый 18.06.2018, 07:41   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
на что мне ответили, что это не имеет никакого отношения к замыканию.
Ну дык так и есть, оно возможно и без самовызова.
https://developer.mozilla.org/en-US/...cript/Closures
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать глобальные переменные в коде? C++ Финголфин Помощь студентам 3 28.01.2016 12:33
Глобальные переменные tae1980 Microsoft Office Excel 16 20.11.2013 08:41
Скрыть глобальные переменные chillUA Microsoft Office Excel 5 22.04.2010 22:50
delphi Переменные доступные во всех формах S_Yevgeniy Помощь студентам 3 25.08.2009 19:10
Кто как учил css, html? Только реально хорошие, а не справочники, трудные для понимания.) nevru1bphp HTML и CSS 19 09.06.2009 23:38