Javascript 为什么JavaSript函数的输出没有定义?

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(

有人能告诉我下面的Javascript函数有什么问题吗? 我正在寻找两个数字之间的最大倍数。 当我在测试窗口中编写不在函数内部的代码时,它可以工作,并提供我需要的东西,但是如果我想将其包含在函数中,则输出是未定义的。我相信我错过了一些愚蠢的事情,但我已经解决了几个小时,我看不到它

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));