运行此代码段时,我得到“ 4”作为输出,但是我想将值“ 4”返回5次。
这是为什么,我该如何解决?
function addTwo(num){
return num + 2;
}
function checkConsistentOutput(func, val){
let first = func(val);
let second = func(val);
if(first === second){
for(let i = 0; i < 5; i++){
return first;
}
}else{
console.log("This function returned inconsistent results");
}
}
console.log(checkConsistentOutput(addTwo, 2));
答案 0 :(得分:4)
return
语句停止执行功能(如果指定,则返回值)。这是不能商量的。
该返回值可以是任何东西,原语,对象,函数,数组等。也许返回5个长数组符合您的需求?
或者,如果要输出值,请跳出函数,但再次调用时从同一位置继续,请阅读有关生成器和yield
语句的信息。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
答案 1 :(得分:1)
实际上,问题是,当您在return
循环中使用for
时,它会立即从循环中返回,如果您需要4
5次,则可以使用console.log()
或使用计数器来计算您4
的出现次数,然后可以从该计数器中判断条件是通过还是失败
现在,您可以看一下代码片段,并查看console.log的工作方式
function addTwo(num){
return num + 2;
}
//Is addTwo stable?
function checkConsistentOutput(func, val){
let first = func(val);
let second = func(val);
if(first === second){
for(let i = 0; i < 5; i++){
console.log(first);
}
}else{
console.log("This function returned inconsistent results");
}
}
checkConsistentOutput(addTwo, 2);
答案 2 :(得分:0)
正如其他人指出的那样,return
行打破了for ...循环并返回了始发呼叫。如果确实需要某个函数重复返回,则可以尝试使用回调函数来处理每个交互。
function addTwo(num){
return num + 2;
}
function checkConsistentOutput(func, val, callback){
let first = func(val);
let second = func(val);
if(first === second){
for(let i = 0; i < 5; i++){
if ( typeof callback === "function" ){
callback(first);
}
}
}else{
console.log("This function returned inconsistent results");
}
}
checkConsistentOutput(addTwo, 2, function(res){
console.log("Result: " + res);
} );