Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Есть js, как скрыть в нем для других js глобальные переменные(доступные только в html к которому подключается)?
dbalor вне форума   Ответить с цитированием
Старый 15.06.2018, 15:52   #2
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,780
Репутация: 3777
По умолчанию

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

Код:

(function() {
  // тут пишите свой код
})()

Вадим Мошев на форуме   Ответить с цитированием
Старый 15.06.2018, 16:33   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,350
Репутация: 3350

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
пространство имён
И где тут имя?
Alex11223 на форуме   Ответить с цитированием
Старый 16.06.2018, 00:27   #4
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,780
Репутация: 3777
По умолчанию

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

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И где тут имя?
Эта самовызывающаяся анонимная функция называется "замыканием". Все переменные и функции, объявленные внутри нее, будут видны только внутри нее. Поэтому это и называется "область видимости" или "пространство имён".
Так что Вадим всё правильно сказал.
__________________
Работаю. В этот раз за деньги.
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 16.06.2018, 12:40   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,350
Репутация: 3350

icq: 512-765
skype: alexp.frl
По умолчанию

Ну так неймспейсом это обычно называют когда оно используется как неймспейс (mynamespace.foo()), а не просто любое замыкание.
Alex11223 на форуме   Ответить с цитированием
Старый 18.06.2018, 01:56   #7
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,780
Репутация: 3777
По умолчанию

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

(function() {
  // ...
})()

на что мне ответили, что это не имеет никакого отношения к замыканию.

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
на что мне ответили, что это не имеет никакого отношения к замыканию.
Ну дык так и есть, оно возможно и без самовызова.
https://developer.mozilla.org/en-US/...cript/Closures
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать глобальные переменные в коде? C++ Финголфин Помощь студентам 3 28.01.2016 13: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


16:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru