如何以及何时调用Javascript全局匿名函数

时间:2015-08-18 20:55:15

标签: javascript jquery

当我看到类似的东西时:

<html>
<head>
<link rel=”stylesheet” href=”css/bootstap.min.css”>
</head>
<body>
<span class=”btn btn-success fileinput-button”>
    <i class=”glyphicon glyphicon-plus”></i>
    <input id=”fileupload” type=”file” name=”files[]” multiple>
</span>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
<script src=”js/bootstrap.min.js”></script>
<script>
$(function () {

});

</script>

</body>
</html>

如何以及何时在html页面上调用匿名函数?

我不明白这是如何运作的。我并不是完全不了解javascript,但我已经多次看过这个,我想知道它是如何工作的。

我也见过.js文件:

(function (factory) {

}(function($) {
});

也许有人可以帮我理解这些语义是什么意思?

2 个答案:

答案 0 :(得分:4)

Javascript顶级语句只是在加载脚本时按顺序执行。在您的第一个示例中,只有一个语句,即对名为$的函数的调用。调用$(function() {...})等同于调用:

$(document).ready(function() {
    ...
});

因此它声明在DOM准备就绪时将执行匿名函数。

你的第二个例子是IIFE(立即执行函数表达式)。它定义了一个以factory为参数的函数,并使用匿名函数作为参数调用该函数。

答案 1 :(得分:0)

•$(function(){

}); 和...一样 $(document).ready(function(){...});

当DOM准备就绪时调用此函数,这意味着您可以开始查询元素。 .ready()将在不同的浏览器上使用不同的方式来确保DOM真的准备就绪。

•(function(){...})();

这只不过是一个在浏览器解释你的ecma- / javascript时尽快调用自身的函数。因此,你不太可能在这里成功地对DOM元素采取行动。