2016-08-12 2 views
1

Для jQuery или Javascript в целом рекомендуется ли НЕ использовать переменную, если она вне области действия обработчика событий?Не рекомендуется ли использовать переменную вне области обработки событий?

Пример: Должен ли я избегать этого?

var $abc = $('#abc'); 
var $def = $('#def'); 
$('#myDiv').click(function() { 
    $abc.show(); 
    $def.hide(); 
}); 

Вместо этого лучше делание:

$('#myDiv').click(function() { 
    $('#abc').show(); 
    $('#def').hide(); 
}); 
+1

В данном случае это вопрос мнения ... стр. jquery javascript –

+1

пока не видел никаких ограничений такого рода. его нормально использовать такой код. – vijayP

+0

Первое более показательное, так как он должен только один раз выполнять поиск DOM. – 4castle

ответ

-1

События обработчики должны знать как это возможно, о вашем коде, и вы также должны написать меньше логики, насколько это возможно внутри них, в случае, если вы «показать, что нецелесообразно использовать переменные за пределами функции, потому что, как и в любой другой функции, если вы пропустите эти переменные вашего кода, все из вашего обработчика будет нарушено.

На мой взгляд, это будет лучший подход.

function doSomething() { 
    var $abc = $('#abc'); 
    var $def = $('#def'); 
} 

//Use .on method for binding events, avoid shortcuts. 
$('#myDiv').on("click", doSomething); 

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

+3

В чем смысл выражения функции? Просто используйте 'doSomething'. – Oriol

+0

@Oriol doSomething обертывает код, избегая наличия логики внутри обработчика событий. Это и есть цель. – Guillermo

+1

'$()' сделает новый вызов конструктора объектов jQuery, это не то, что я называю «* Имея меньше логики, насколько это возможно». – Kaiido

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