Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.04.2010, 12:04
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Сообщение от e1f Посмотреть сообщение
Да не вопрос
function change() {
    window.x=11;
}

x=10;
 
change(x);
alert(x);


Меняет? Меняет
Это сарказм был)) А про замыкания я знаю)

function change() {
    x=11;
}
var x=10;
change();
alert(x);

Так лучше )
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #12 (permalink)  
Старый 22.04.2010, 09:32
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Nekromancer
А про замыкания я знаю)
А тут нет замыканий
Ответить с цитированием
  #13 (permalink)  
Старый 22.04.2010, 09:43
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Угу, тут есть функция которая видит весь контекст.. почему бы не назвать её замыканием?
var closure = function(){
change();
}
function change(){
x = 11;
}
var x = 10;


Вот так вот уже и замыкание..
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #14 (permalink)  
Старый 22.04.2010, 12:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Nekromancer
Угу, тут есть функция которая видит весь контекст.. почему бы не назвать её замыканием?
Любой код видит глобальные переменные. Давайте любой код называть замыканием.
Ответить с цитированием
  #15 (permalink)  
Старый 22.04.2010, 12:21
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Имеется введу замыкание не из-за глобальных переменных, а из-за специфики такой (function label) записи функци.. если функция будет анонимная, то она не увидит переменную "ниже" себя в коде.
Чем это не замыкание, использовать именованную функцию для работы со всем контекстом?..
давайте рассмотрим пример..
(function(){
//...
function named(){
 return x;
}
var anonimus = function(){
 alert(named());
}
var x = 'чё то там';
//...
anonimus();
}());


Это конечно извращение, реальную задачу сейчас трудно придумать, да может оно и не нужно вообще, но имхо, это замыкание.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #16 (permalink)  
Старый 22.04.2010, 12:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Nekromancer
если функция будет анонимная, то она не увидит переменную "ниже" себя в коде.
Разгребайте кашу в голове http://dmitrysoshnikov.com/ecmascrip...r-5-functions/

Ну и заодно http://dmitrysoshnikov.com/ecmascrip...er-6-closures/
Ответить с цитированием
  #17 (permalink)  
Старый 22.04.2010, 12:46
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Читал я это.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #18 (permalink)  
Старый 22.04.2010, 12:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Тогда вы должны понимать бредовость процитированной мной фразы.
Ответить с цитированием
  #19 (permalink)  
Старый 22.04.2010, 13:09
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

эээ.. ну был не прав, почему то думал, что scope контекста запоминается такой, какой был в момент объявления..
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #20 (permalink)  
Старый 22.04.2010, 14:47
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,564

С замыканиями нужно связываться очень аккуратно и с солидной js подготовкой, а то можно получить Замыкание головного мозга .
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собрался силами, собираюсь освоить Javascript walker Общие вопросы Javascript 14 20.03.2012 15:17
Flash c XML плюс javascript Vadim028 Events/DOM/Window 0 03.04.2010 14:40
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43