javascript函数不会循环

javascript函数不会循环,javascript,for-loop,Javascript,For Loop,下面是我正在研究的一个javascript实践问题: function combo(str){ var splitStr=str.split(""); for (var i=0; i<splitStr.length; i++){ return splitStr[i]; } } console.log(combo("dog")); 为什么循环不返回所有三个字母?它打印d并停止。如果我把循环从函数中去掉,它就会工作 我做错了什么?请解释。return结束函数调用,返回后

下面是我正在研究的一个javascript实践问题:

function combo(str){
  var splitStr=str.split("");
  for (var i=0; i<splitStr.length; i++){
    return splitStr[i];
  }
}

console.log(combo("dog"));
为什么循环不返回所有三个字母?它打印d并停止。如果我把循环从函数中去掉,它就会工作

我做错了什么?请解释。

return结束函数调用,返回后返回所有内容

您的代码结构看起来像是希望它像yield一样工作,但是ES5-不支持这一点,因此您还不能使用它,并且您仍然会遇到其他问题,即您只需要记录第一个生成的结果

相反,将绑定到console的console.log传递到循环中

function combo(str, callback){
    var splitStr=str.split("");
    for (var i=0; i<splitStr.length; i++){
        callback(splitStr[i]);
    }
}

combo('dog', console.log.bind(console));

return停止函数的执行。循环的其余部分没有发生。

您正在从for循环内部返回,这将停止函数的执行。如果要返回数组的每个字母,只需返回拆分数组本身:

function combo(str) {
  return str.split("");
}
您似乎想要的行为是可以通过使用来实现的


但是,请注意,到目前为止,只有少数浏览器支持此功能。

使用return,您将结束此函数并从中取出该数据,接下来的内容将不会被调用

您可以像这样返回一个数组

function combo(str){
  return splitStr=str.split("");

}

console.log(combo("dog"));

循环中的“return”结束循环并返回第一个值,因为它只允许循环运行一次


将'return'语句置于循环的作用域{}之外将允许循环继续运行/重复。

为什么会这样,您只能从函数返回一次,一旦完成,它就不会在后台神奇地运行并返回更多内容。
var generator = combo("dog");

console.log(generator.next()) //d
console.log(generator.next()) //o
console.log(generator.next()) //g
function combo(str){
  return splitStr=str.split("");

}

console.log(combo("dog"));