2014-02-16 6 views
1

Я недавно спросил question о разнице между областью уровня функции и область уровня кадра. Ответ был исчерпывающим и помог мне разобраться в области функционального уровня и представил концепцию .JavaScript-функция и область действия

Теперь у меня есть другое обсуждение. Примером может служить функция jQuery .ready() и объявленный в ней обработчик событий. То есть, почему переменная, объявленная в обработчике события .click(), не поднимается до функции .ready()? Это потому, что .click() не является свойством функции .ready()? и переменная, объявленная в пределах .click(), поднимается только до этой функции?

Пример:

$(‘document’).ready(function(){ 
    $(‘selector’).click(function(){ 
     var x = 10; //discussed variable 
    }); 
}); 

Я пытаюсь научить JS скрипт сам, но это понятие очень трудно для меня, чтобы понять. Может кто-нибудь объяснить это с помощью простого примера или предоставить соответствующую ссылку, пожалуйста.

Благодаря

+1

FYI, используйте '$ (document)' not '$ ('document')' –

+0

Да, конечно. – Dimt

ответ

4

.click обработчика события является анонимной функцией, и, следовательно, как и любая другая функция имеет свою область применения. Переменные, объявленные в нем, остаются в пределах этой области.

Подъем только применим в пределах функций - переменные не просачиваются в охватывающий объем. Если бы они это сделали, функция scope была бы бесполезна ...

+0

Хорошо, я думаю, что у меня это есть, я запутался в блоке _loop_ или блоке оператора _if_, который использовался в качестве примера в вышеупомянутом вопросе. Благодарю. – Dimt

+0

@ Да, да, к сожалению, вы были введены в заблуждение одним из комментариев к принятому ответу на другой вопрос - переменные, объявленные во внутренней функции, недоступны в закрывающей функции. – Alnitak

+0

Однако ответ был хороший, просто я его неправильно истолковал. Еще раз спасибо. – Dimt

Смежные вопросы