这个函数:
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); } }();
我都见过,有外括号的和没有外括号的,似乎在同一个上下文中。
最佳答案
你的函数返回内部函数,为了调用 alert 调用现在是 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();
关于javascript - 为什么这个简单的Js函数在定义后加了()却没有返回值/对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45943938/