[英]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.