【问题标题】:Using parenthesis when calling a function [duplicate]调用函数时使用括号[重复]
【发布时间】:2016-07-21 07:35:53
【问题描述】:

我写了一个函数,打算在几种情况下调用它。这是函数:

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

在某些情况下,调用函数只有在后面没有括号的情况下才有效:

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

在另一种类似的情况下,调用函数仅在其后加上 WITH 括号时才有效:

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

我想我理解第一种情况(无括号)返回回调函数,第二种情况(无括号)返回函数的输出。谁能帮忙解释一下为什么在这两种情况下调用我的函数的方式会发生变化?

谢谢;

心肺复苏术

【问题讨论】:

  • 使用括号调用函数。没有它们,它只是一个函数引用。
  • 类似地,考虑var foo = responsivevar foo = responsive()之间的区别。

标签: javascript jquery


【解决方案1】:

在第一个场景中,您分配要在单击事件上运行的函数,单击事件将执行调用。在第二种情况下,您自己调用该函数。

【讨论】:

  • 谢谢。这解释了它
  • 我还注意到var responsive = function(){...};.因此,您可以从字面上互换使用responsivefunction(){...}(简单的代数概念)。
【解决方案2】:

您所说的第一种情况是将您的函数连接为事件侦听器,它会在触发事件时调用传递的函数

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

您的第二种情况是您自己调用它,在这里只是放置 responsive 而没有实际调用它不会做任何事情。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2011-09-25
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多