gpt4 book ai didi

javascript - 何时/为何在回调函数中使用 "return"

转载 作者:行者123 更新时间:2023-12-02 15:20:15 25 4
gpt4 key购买 nike

我试图了解什么时候应该使用return,什么时候不应该使用。

下面使用的return让我感到困惑。请参阅我的问题的评论:

function each(collection, iterator) {
if (Array.isArray(collection)){
for (var i=0;i<collection.length;i++){
iterator(collection[i],i,collection)
}
}else {
for (var key in collection){
iterator(collection[key],key,collection)
}
}
};


function map(collection, iterator) {
var result = [];

// why we don't add "return" in front of the each() function here?
// why, if I add return, is the result "undefined"?
each(collection,function(value,key,collection){

result.push(iterator(value,key,collection));
})
return result;
};

function pluck(collection, key) {
// Why do we add "return" in front of map function, and
// why if I don't add it, the result is "undefined"?
return map(collection, function(item){
return item[key];
});
};

var car = [{type: "Fiat", model: "500", color: "white"}]

console.log(pluck(car,'type'));

最佳答案

使用return让你的函数返回一个值;如果函数不需要返回任何内容,或者您​​还不想返回,请不要使用它。

在您的示例中,如果您只是说:

function pluck(collection, key) {
map(collection, function(item){
return item[key];
});
};

map() 仍会被调用,但 map() 的结果将被丢弃。

就好像你写的是:

function add(a, b) {
var c = a + b; // computed, not returned
}

var result = add(1, 2); // undefined

而不是:

function add(a, b) {
var c = a + b; // computed
return c; // and returned
}

var result = add(1, 2); // 3

each() 循环一组事物,每次执行一个操作。它没有要返回的结果。

就您而言,在 each() 之后还有更多代码 - 请记住,return; 结束返回的函数.

// if we returned here
each(collection,function(value,key,collection){
// this isn't part of each's "value", it's just some code
// that runs within the each loop
result.push(iterator(value,key,collection));
})

// we'd never get here, to return the total result
return result;

关于javascript - 何时/为何在回调函数中使用 "return",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144872/

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