此函数:
var f8 = function() { return function(param1 = "default") { alert(param1); } }
返回一个对象:ƒ (param1 = "default") { alert(param1); }
但是这个功能:
var f9 = function() { return function(param1 = "default") { alert(param1); } }();
不会,即使在函数调用f9();
之后。为什么?
我的新手理解是,附加的括号只会在定义函数后立即调用外部函数。换句话说,等效于:
var f10 = function() { return function(param1 = "default") { alert(param1); } };
f10();
从而返回与以前相同的函数对象。附带说明一下,如果有人能解释什么时候应该使用var f11 = (function() { return function(param1 = "default") { alert(param1); } }());
而不是我见过的var f11 = function() { return function(param1 = "default") { alert(param1); } }();
,一个是有外层的,一个是没有的,似乎在同一个上下文中。
您的函数返回内部函数,以便调用警报调用现在为 f9 的内部函数
var f9 = function() { return function(param1 = "default") { alert(param1); } }();
console.log(f9);
f9();
这相当于
var f10 = function() { return function(param1 = "default") { alert(param1); } };
console.log(f10);
var f9 = f10();
console.log(f9);
f9();