回调函数没有 return 任何东西

callback function doesn't return anything

var res = "";
function longest(sen, callback) {
  sen = sen.split(" ");
  for(var i = 0; i < sen.length; i++) {
    callback(sen[i]);
  }
}

function findLongest(item) {
  if(item.length > res.length) {
    res = item;
  }
  return res;
}

longest("the greatest day EVERERAWEREWRWRAEWR",findLongest);

我试图找到我输入的字符串中最长的单词,但它所做的只是 return 未定义。我知道有很多更简单的方法可以找到最长的单词,但我想实现这样的回调。

longest 更新 res(通过回调)但不更新 return 任何内容。尝试在调用 longest 后打印出 res,或者从 longest.

returning res

var res = "";
function longest(sen, callback) {
  sen = sen.split(" ");
  for(var i = 0; i < sen.length; i++) {
    callback(sen[i]);
  }
}

function findLongest(item) {
  if(item.length > res.length) {
    res = item;
    console.log('now max len is %s',item);
  }
}

longest("the greatest day EVERERAWEREWRWRAEWR",findLongest);

删除 return,因为您不使用它。替换为 console.log 以便您可以看到结果。