gpt4 book ai didi

javascript - 怎么可能将参数传递给另一个同名函数中的内部函数?

转载 作者:行者123 更新时间:2023-12-05 02:02:42 28 4
gpt4 key购买 nike

我是 JavaScript 的新手,是从 Freecodecamp 学习的。这是学习高阶箭头函数时的脚本之一。我完全看不懂,下面的例子中有两个同名的函数吗?参数在哪里传递? inside 内部函数还是外部函数?如果答案是外部函数,那怎么可能呢,因为外部函数似乎不接受任何参数。

const increment = (function(){
return function increment(number, value){
return number + value;
};
})();
console.log(increment(5,2));

最佳答案

分配给 increment 常量的函数包装在 IIFE(立即调用函数表达式)中。这意味着这个函数,顾名思义,会立即被调用并执行。然后它返回对在 IIFE 中声明的函数的引用。

const increment = (function(){
return function increment(number, value){
return number + value;
};
})();

结果与此相同:

const increment = function increment(number, value){
return number + value;
};

这是一个命名函数表达式。如果您遵循此模式,则允许变量和函数具有相同的名称。尝试在控制台中定义它,就像在第二个代码块中一样。

这里的区别在于变量 increment 只是对函数 increment 的引用。

但在您的情况下,函数增量 是在匿名函数的内部 范围内定义的。 increment 函数名称仅在该匿名函数的范围内可用。然后返回对 increment 函数的引用。

虽然 IIFE 可以省略,因为它没有做任何不同的事情。如果你想合并一个闭包来隐藏一些变量,它可以增加一些值(value),例如:

const increment = (function(){
const hiddenValue = 2;
return function increment(number, value){
return number + value + hiddenValue;
};
})();

现在每次调用 increment 时,hiddenValue 都会添加到公式中。这样你就可以创建一种全局变量,它存在于 IIFE 的范围内,不会污染你的实际全局范围。

关于javascript - 怎么可能将参数传递给另一个同名函数中的内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65665634/

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