javascript - 当我似乎不需要匿名函数时,Javascript/JQuery 中匿名函数的目的是什么?

标签 javascript jquery html

让我更好地解释一下。我刚刚开始学习 JS 和 Jquery,刚刚学习了 java/c 一段时间。我已经习惯了这些语言中的函数(方法),并且很难理解为什么在 JS 中使用某些函数。我已经阅读了各种教程并搜索了该网站,但“为什么使用匿名函数”的答案与我正在寻找的不同。

例如:

$(document).ready(function() {
    $('div').hide();
});

这里通过使用 jquery,我们用函数隐藏了“div”元素。或者在这里:

$('div').click(function() {
    $('div').hide();
});

这里的情况是一样的,除了当我们点击 div 时它会隐藏它。但这是我感到困惑的事情 - 为什么它需要在单击时运行“.hide()”,而不是每次单击时都运行“ ('div').hide();"

或者在第一段代码中,您只想隐藏 'div' 元素,为什么它不只是简单地用 $('div').hide() 隐藏元素 - 为什么需要一个函数去做这个?您不需要在其他地方调用该函数。它只是在文档准备好时隐藏它,或者在第一个示例中,当您单击它时它会隐藏。

到目前为止,我在codeacademy的练习教程和其他教程视频中已经多次看到过这种情况,其中有一些我认为不需要但却使用的功能。

最后,甚至是一个带有这样的变量的函数:

$('#add').click(
    function() {
        var value = $('#inp').val(); 
        $('#shoplist').append('<li>' + value + ' </li>'); 
    }
);

单击时,它将一个列表元素添加到无序列表中,但我不明白 function() {} 的需要是什么。 .click() 已经在点击时发生了一些事情,我们在其中运行代码以在点击时发生,为什么它还需要一个 function() 来使里面的代码工作?

最佳答案

why does it need be on click, then a function running ".hide()" as opposed to just every time on click it just does "('div').hide();"

您必须将一些内容传递给click

那个东西是“点击事件发生时你想要运行的函数”

如果您这样做:

...click( $('div').hide() )

那么你会:

  1. 立即调用hide()(因为这是$('div').hide()在求值时所做的事情)
  2. 将返回值传递给click

返回值不是函数,因此它要么出错,要么被忽略,并且单击不会执行任何操作。

<小时/>

传递给 click 的函数不需要是匿名的,但它确实需要是一个函数。

这样就可以了,例如:

function hide_div() {
    $('div').hide();
}

...click(hide_div)

关于javascript - 当我似乎不需要匿名函数时,Javascript/JQuery 中匿名函数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036929/

相关文章:

javascript - .Net MVC 将 ViewBag 值分配给 JavaScript 脚本变量问题

javascript - 如何只设置一键停止/启动setInterval函数

javascript - 使用常规 javascript 检测 Jquery,如果不存在则动态加载它

javascript - 全屏菜单只出现在导航栏中

jquery - 使用 daterangepicker 过滤数据表

php - 我自己网站的内容管理系统

javascript - 在处理大量数据时停止 Web Worker?

php - 从 PHP 插入时在 MongoDB 上执行 JS

javascript - jQuery 小部件 : global variable not consistent

javascript - 自定义点击计数器