javascript函数不会循环
下面是我正在研究的一个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结束函数调用,返回后
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"));