2016-07-20 6 views
1

Я написал функцию и назову ее в нескольких случаях. Вот функция:Использование круглых скобок при вызове функции

var responsive = function(){ 
    $('#menuicon').toggleClass('menuicon-res'); 
    $('.fixed-menu-item').toggleClass('res'); 
} 

В определенном случае вызов функции работает только тогда, когда пишется без скобок после него:

$('#menuicon').click(responsive); 

В другом подобном случае, вызов функции работает только тогда, когда написано с скобки после него:

$('#top').click(function(){ 
    $('html, body').animate({scrollTop: 0},500); 
    responsive(); 
}); 

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

Thanks;

CPR

+2

Использование функции parens вызывает функцию. Без них это просто функция ссылки. –

+0

Аналогично рассмотрим разницу между 'var foo = responsive' и' var foo = responsive() '. – apsillers

ответ

3

В первом случае вы назначаете функцию, которая будет работать на вашем щелкните событие, и событие щелчка будет делать звонки. Во втором сценарии вы вызываете функцию самостоятельно.

+0

спасибо. что объясняет это – CandyPaintedRIMS

+0

Я также заметил бы, что 'var responsive = function() {...};'. Таким образом, вы можете буквально использовать 'responsive' и' function() {...} 'взаимозаменяемые (простые алгебраические концепции). – Sam

2

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

//this will execute when "#menuitem" is clicked 
$('#menuicon').click(responsive); 

Ваш второй случай, если вы звоните сами, здесь просто ставя responsive без фактического вызова, ничего не сделает.

$('#top').click(function(){ 
    $('html, body').animate({scrollTop: 0},500); 
    responsive(); 
}); 
Смежные вопросы