Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2009, 23:21
Igor88
 
Сообщений: n/a

Вызов функции из отдельного скрипта
есть яваскрипт, вынесенный в файл
$(document).ready(function() {
$("#div1").click(function() {
alert( testf() );

});

function testf () {
return 'OK';
}

});
и второй яваскрипт в отдельном файле
$(document).ready(function() {

$("#div2").click(function() {
alert( testf() );

});

});
Как заставить работать клик на "Second element"
<div id="div1">First element</div>
<div id="div2">Second element</div>
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2009, 23:34
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вынесите определение функции testf () из замыкания в глобальную область видимости
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2009, 04:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

там дело не в замыкании, а в том, что
function testf() { 
return 'OK';
}

это
var testf = function() { 
return 'OK';
}

т.е. внутренняя функция - локальна
если же написать
testf = function() { 
    return 'OK';
}

то все будет работать
я думаю так
p.s. Igor88, но это не значит, что нужно оставить определение функции внутри обработчика события load
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2009, 09:50
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

x-yuri,
функция объявленная внутри другой=функция видимая только в ее области видимости(если не определить руками в глоболку)=замыкание.
хотя тут не используется возможность testf() использовать локальные переменные "своего" обработчика onload(),но формально это замыкание.
вот, что я хотел сказать.
Но, ты прав:для новичка стоило подобрать другие слова.
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2009, 22:18
Igor
 
Сообщений: n/a

Спасибо
x-yuri Спасибо
Gvozd - видимость функции в глобальной области понятна и не представляет затруднений. Меня интересовало именно в обасти ready(). Я полагал что var testf =function() в области видимости всех document.ready()
В любом случае ответ получен, благодарю.
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2009, 23:46
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Gvozd, ну вот по wikipedia:
Замыкание (англ. closure) в программировании — процедура, которая ссылается на свободные переменные в своём лексическом контексте
testf ни на что не ссылается. В чем я ошибаюсь?
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2009, 00:14
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов событий из js функции Destrifer Общие вопросы Javascript 5 29.11.2008 15:28
Вызов скрипта для Opera Andrew_S Общие вопросы Javascript 8 25.09.2008 12:23
Вызов функции zxc Общие вопросы Javascript 6 15.09.2008 11:56
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 13:44
Вызов функции из файла. Phoenix Общие вопросы Javascript 2 21.11.2007 22:49