让我更好地解释一下。我刚刚开始学习 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() )
那么你会:
- 立即调用
hide()
(因为这是$('div').hide()
在求值时所做的事情) - 将返回值传递给
click
。
返回值不是函数,因此它要么出错,要么被忽略,并且单击不会执行任何操作。
<小时/>传递给 click
的函数不需要是匿名的,但它确实需要是一个函数。
这样就可以了,例如:
function hide_div() {
$('div').hide();
}
...click(hide_div)
关于javascript - 当我似乎不需要匿名函数时,Javascript/JQuery 中匿名函数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036929/