繁体   English   中英

JavaScript中的自调用功能

[英]Self invoking function in JavaScript

我有一个像这样的自调用功能:

var f = (function f(){ return "123"; }, 
         function g(){ return 2; },
         function h(){ return "test"; })();

typeof f;

typeof f始终是最后一个函数定义中返回的类型。 就像h是最后一个,那么它是"string" ,但是如果我删除h并把g作为最后一个,则是"number"

有人可以解释为什么吗?

因为功能由分离的,逗号运算符。

这将评估分离的表达式,并返回最后一个表达式的结果。

var x = ("a", "b", "c");

console.log(x); // "c"

因此,在您的情况下,作为enclosing ()组的结果返回了最后一个函数,而这就是尾随()函数调用所调用的那个函数。

   // result from group---v   v---invoked
var f = (func1, func2, func3)()

让我们分解一下。

Javascript中的逗号运算符计算多个表达式,并返回最后一个表达式:

>>> "a", 1
1
>>> 1, "a"
"a"

因此,当您使用三个匿名函数并将它们与逗号串在一起时,它将得出最后一个:

>>> (function f(){ return "123"; }, function g(){ return 2; }, function h(){ return "test"; })
function h(){ return "test"; }

评估结果执行函数,返回"test"

将执行逗号分隔列表中最后一个函数,并确定总返回值。

comma运算符返回最后一项。 你在做什么就像:

var f = function(){}, function(){}, "string";

这将使f成为字符串,因为仅调用了最后一个函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM