Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是';函数()';事件声明中是否需要?_Javascript_Jquery - Fatal编程技术网

Javascript 是';函数()';事件声明中是否需要?

Javascript 是';函数()';事件声明中是否需要?,javascript,jquery,Javascript,Jquery,我有两个脚本: <script src="../js/createopp.min.js"></script> <script src="../js/validation.min.js"></script> 如果我把它改写成 $('#places').blur(checkPlacesAvailable()); 我在函数上得到一个“未定义”错误。但我看到许多使用第二种格式的例子。在我的例子中,是否有明显的东西阻止了第二个版本的工作?您应该像这样将函

我有两个脚本:

<script src="../js/createopp.min.js"></script>
<script src="../js/validation.min.js"></script>
如果我把它改写成

$('#places').blur(checkPlacesAvailable());

我在函数上得到一个“未定义”错误。但我看到许多使用第二种格式的例子。在我的例子中,是否有明显的东西阻止了第二个版本的工作?

您应该像这样将函数引用传递给事件处理程序

$('#places').blur(function(){checkplacesavaailable()});
是“相当于”这个吗

$('#places').blur(checkplacesavaailable);
请注意,由于作用域等原因,它并不完全相同,但大多数情况下,您可以通过第二种方式传递它。

此代码:

$('#places').blur(checkPlacesAvailable());
立即启动您的功能。如果您不想编写“函数”,可以这样做:

$('#places').blur(() => checkPlacesAvailable());

在第二种情况下,将立即调用
checkPlacesAvailable
方法,其中与第一种情况一样,仅在
blur
事件中调用该方法。您可能会将第二种情况与
$('#places').blur(checkPlacesAvailable)混淆感谢您提供有趣而有用的注释,解释为什么需要使用带有“function()”的版本。但我的问题的措辞显然把你们都弄糊涂了。还没有人说过为什么我在一种情况下会出现“未定义”的错误,而在另一种情况下却没有?@Lee Taylor:你的示例的功能有什么不同?可能是因为它与范围有关,这让我感到困惑,也可能是JS无法识别函数名的原因。你能说得更多吗?@magnol如果JS没有识别函数名,那么你可能还没有定义它。基本上,在我的第一个示例中,直到触发事件,我才访问引用
checkPlacesAvailable
,而在第二个示例中,我立即访问它。出现错误的原因是,
checkPlacesAvailable
引用仅在代码执行的后期设置为函数。您可以检查我在何处表示这两个示例检查控制台
$('#places').blur(() => checkPlacesAvailable());