Javascript 为什么JavaSript函数的输出没有定义?
有人能告诉我下面的Javascript函数有什么问题吗? 我正在寻找两个数字之间的最大倍数。 当我在测试窗口中编写不在函数内部的代码时,它可以工作,并提供我需要的东西,但是如果我想将其包含在函数中,则输出是未定义的。我相信我错过了一些愚蠢的事情,但我已经解决了几个小时,我看不到它Javascript 为什么JavaSript函数的输出没有定义?,javascript,function,undefined,Javascript,Function,Undefined,有人能告诉我下面的Javascript函数有什么问题吗? 我正在寻找两个数字之间的最大倍数。 当我在测试窗口中编写不在函数内部的代码时,它可以工作,并提供我需要的东西,但是如果我想将其包含在函数中,则输出是未定义的。我相信我错过了一些愚蠢的事情,但我已经解决了几个小时,我看不到它 function maxMultiple(d, b){ const arr = []; for (let i=b; i<=d; i+=b) { // i = i + b arr.push(
function maxMultiple(d, b){
const arr = [];
for (let i=b; i<=d; i+=b) { // i = i + b
arr.push(i)}
if (d>0 && b>0){
return arr.pop(); // does not work - undefined
} else {
return d; }
}
console.log(maxMultiple(7,100)); // Output is undefined
// it works....
/*
let b = 7;
const d = 100;
const arr = [];
for (let i=b; i<=d; i+=b) { // i = i + b
arr.push(i);
}
console.log(arr.pop()); //Output is 98
*/
函数maxMultipled,b{
常数arr=[];
对于let i=b;i0&&b>0{
let res;//缓存结果
//空数组上的pop始终提供未定义的
console.log[].pop==res=arr.pop;
return res;//不起作用-未定义
}否则{
返回d;
}
}
console.logmaxmultiple7100;//输出未定义
看起来你已经交换了变量b和d。只需交换函数签名中的参数,就可以得到预期的结果 您共享的示例将有效,因为您使用了b作为7,d作为100。 在实际代码中,您传递的参数如下所示: b-100,d-7。 因此for循环甚至没有执行一次,因此正如您所提到的,日志记录未定义
希望有帮助 对于let i=b,使用该行发出问题;因为100小于7。数组为空。没有人被推过
我猜这两个参数的顺序不对 看起来你已经交换了变量b和d。只需交换函数签名中的参数,您就会得到您想要的。非常感谢!!!它现在起作用了。我也补充了这一点作为答案。也许你想接受这一有效答案。回答链接:谢谢你,伙计!“如果我交换参数,它会按我需要的方式工作。”MartyS很高兴听到。如果这是一个有效的答案并且对你有帮助,也许你会接受它。非常感谢!非常感谢你!非常感谢你!
function maxMultiple(d, b) {
const arr = [];
for (let i = b; i <= d; i += b) { // i = i + b
arr.push(i)
}
if (d > 0 && b > 0) {
return arr.pop(); // does not work - undefined
} else {
return d;
}
}
console.log(maxMultiple(7, 100));