gpt4 book ai didi

javascript - 这两个javascript函数到底有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:27:43 25 4
gpt4 key购买 nike

我认为我在学习 javascript 时遇到过两种类型的函数。我已尝试按照我的理解将它们放在下面。

function example(arg1, arg2) { //code to do stuff here }

thing.method(function(arg) {
//code to do stuff here
});

我的想法是,第一种情况是创建一个名为 example 的函数,它接受两个参数,并且内容发生在大括号中。我相信只要在范围内就可以调用和使用该函数(我认为这是正确的词?)。

下一秒我就糊涂了。我的想法是,我们有一个东西(数组、对象等),在那个东西(foreach、map 等)上调用了一个方法,然后我就卡住了。有一个函数,它没有名字?接受一个参数,大括号内就会发生一些事情。假设这个东西是一个数组,我们调用了 foreach 那么函数括号内的东西会发生在每个元素上吗?为什么我要使用它而不是像第一个函数那样创建一个我可以直接调用的函数?

为什么我不能直接说:

function example(arg) { //stuff }
thing.method(example(arg));

我可能误解了一些事情。有人能帮我解决问题吗?

最佳答案

thing.method(function(arg) {
//code to do stuff here
});

这使用了所谓的匿名函数。就像你说的,它没有名字。它作为参数传递给 thing.method()thing.method() 的函数体将使用此函数,例如:

thing: {
method: function(callback) {
//...
callback();
//...
}
};

你不能这样写

function example(arg) { /* stuff */ }
thing.method(example(arg));

因为在此示例中,您example(arg) 的返回值传递给 thing.method(),而不是函数本身。但是,您可以这样写:

function example(arg) { /* stuff */ }
thing.method(example);

现在,您可以想象 method() 设置一些变量并将其传递给您传入的函数,例如:

thing: {
method: function(callback) {
var foo = "bar";
//...
callback(foo);
//...
}
};

关于javascript - 这两个javascript函数到底有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166749/

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