Вызов функции из отдельного скрипта
есть яваскрипт, вынесенный в файл
$(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> |
вынесите определение функции testf () из замыкания в глобальную область видимости
|
там дело не в замыкании, а в том, что
function testf() { return 'OK'; } это var testf = function() { return 'OK'; } т.е. внутренняя функция - локальна если же написать testf = function() { return 'OK'; } то все будет работать я думаю так p.s. Igor88, но это не значит, что нужно оставить определение функции внутри обработчика события load |
x-yuri,
функция объявленная внутри другой=функция видимая только в ее области видимости(если не определить руками в глоболку)=замыкание. хотя тут не используется возможность testf() использовать локальные переменные "своего" обработчика onload(),но формально это замыкание. вот, что я хотел сказать. Но, ты прав:для новичка стоило подобрать другие слова. |
Спасибо
x-yuri Спасибо
Gvozd - видимость функции в глобальной области понятна и не представляет затруднений. Меня интересовало именно в обасти ready(). Я полагал что var testf =function() в области видимости всех document.ready() В любом случае ответ получен, благодарю. |
Gvozd, ну вот по wikipedia:
Замыкание (англ. closure) в программировании — процедура, которая ссылается на свободные переменные в своём лексическом контексте testf ни на что не ссылается. В чем я ошибаюсь? |
ну, во первых это вопрос терминологии, и особой конструктивной деятельности он не принесет, потому что мы с вами умеем их использовать, и не важно, какими мы словами пытаемся это объяснить.
а новичкам соответсвенно надо читать не определения из вики, а практическую реализацию, и пытатся ее понять в своюй очередь по терминологии уже было обсждение тут я лично придерживаюсь третьего абзаца из вики, согласно которого получается, что замыканием является любая функция, определяемая в теле другой функции(даже, если она не ссылается на контекст родителя, и не переживает его) но, ключевой возможностью замыканий является именно работа с областями видимости. тут есть функция, определяемая внутри другой. это замыкание. но, толку от него ноль, потому что нету никакого использования областей видимости PS как чвидетельствует тема указання мною, каждый понимает определение замыкания по своему. но при этом, каждый из нас полагаю сможет разобратся в коде, использующем замыкание, написанным другим |
Часовой пояс GMT +3, время: 00:52. |