JavaScript函数不会循环
javascript function won't 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
结束函数的调用,将返回该return
之后的任何内容
你的代码结构看起来像你希望它像yield
但ES5-不支持这一点,所以你不能使用它(还),你仍然会遇到其他问题(即你只会记录第一个生成的结果)
相反,将您的console.log
(绑定到 console
)传递到循环中;
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,您将结束函数并从中得出该数据,接下来不会调用
您可以像这样返回一个数组。
function combo(str){
return splitStr=str.split("");
}
console.log(combo("dog"));
您从 for 循环内部返回,这将停止函数的执行。如果要返回数组的每个字母,只需返回拆分数组本身:
function combo(str) {
return str.split("");
}
您似乎想要的行为可以通过生成器函数(函数*)以某种方式实现。
function* combo(){
var splitStr = str.split("");
for (var i=0; i < splitStr.length; i++){
yield splitStr[i];
}
}
然后你会像这样调用它:
var generator = combo("dog");
console.log(generator.next()) //d
console.log(generator.next()) //o
console.log(generator.next()) //g
但请注意,到目前为止,只有少数浏览器支持此功能。
return 停止函数的执行。循环的其余部分没有发生。
'return' 结束循环并返回第一个值,因为它只允许循环运行一次。
将"return"语句放在循环的范围{}之外将允许循环继续运行/重复。
相关文章:
- JavaScript/Jquery:一个特殊用途的for循环函数
- 为循环函数中的元素指定单击
- Jquery下一个和上一个按钮循环函数
- 循环函数(Javascript回调帮助)
- 循环函数不起作用
- 使用ajax调用循环函数
- 在Javascript中修改循环函数的参数
- 如何循环函数数组并在单击时一次执行一个
- 设置超时可以保存我的循环函数不被视为无响应
- 具有超时的循环函数
- j查询如何在一系列延迟后循环函数
- 如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
- for 循环函数似乎未运行
- 对于内部循环函数(新手)
- 循环函数会导致它在 javascript 中无响应
- 循环函数
- 如何优化循环函数
- JS拒绝循环函数
- 中断循环函数
- 在 JavaScript 中循环函数可以吗?