自调用匿名函数的语法

Grammar of Self Invoking Anonymous Functions

本文关键字:语法 函数 调用      更新时间:2023-09-26

从我从其他主题中读到的关于siaf或自调用匿名函数的问题只是作为容器存在,并且它限制了变量的范围(从我学到的)。现在,问题是,为什么我可以这样做:

$("ul>li").click((function(){
}));

但在它之后不添加另一个SIAF ?像这样:

$("ul>li").click((function(){
}));
(function(){
});

这对我来说很奇怪,因为只有SIAF本身在IDE中没有给我任何错误:

$("ul>li").click((function(){
}));
(function(){
});

This:

(function() { .. });

是一个无操作表达式,特别是它不涉及函数调用。函数对象被实例化,但不以任何方式使用。

:

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

做一些事情,因为后面的()导致函数被调用。(它不调用自己)

在JavaScript中,对函数的引用只是一个值,而函数只是一个对象(一个特殊的对象)。当对函数的引用后跟一个带圆括号的值列表时,这就是函数调用。函数的引用来自哪里并不重要。(它的来源可以影响函数调用的语义,但不会影响函数调用本身的基本事实。)

编辑本;术语"自调用函数表达式"已经获得了一些流行。我不想陷入争论,但在我看来,它不如另一种"立即调用的函数表达式"准确,因为函数实际上不能从外部调用自己。它可以包含对自身的调用,但这是完全不同的事情。但是我理解这个词的意思,我认为它是无害的。