gpt4 book ai didi

javascript - 为什么这个简单的Js函数在定义后加了()却没有返回值/对象?

转载 作者:行者123 更新时间:2023-11-29 11:01:40 27 4
gpt4 key购买 nike

这个函数:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com