Javascript:当幂等于 0 时,用于解决指数问题的 While 循环出现错误

Posted

技术标签:

【中文标题】Javascript:当幂等于 0 时,用于解决指数问题的 While 循环出现错误【英文标题】:Javascript: While Loop to Solve Exponents Problem Getting Error When Power Equals 0 【发布时间】:2019-03-22 13:13:37 【问题描述】:

我写了javascript代码来解决以下问题>>>

编写一个接受两个参数的指数函数:

基数(数字) 功率(数)

Exponentiate 应该返回通过幂提高底数的结果。假设 power 参数将始终是大于或等于零的整数。不要忘记任何数字的 0 次方都等于 1!

function exponentiate (base, power) 

  if (power === 0)
    return result = 1
  

  // while loop 
  let count = 0
  let result = 1;

  while (count < power)  

    result *= base
    count += 1
  

  return result 



exponentiate(3, 0)

但我收到以下错误:ReferenceError: result is not defined

我的代码有什么问题?

【问题讨论】:

这是作业吗?我可以在 repl.it 上看到很多相同的练习:repl.it/@brynnact33/…, repl.it/@Alicia33/Loops-and-Debugging-Workshop, ... return result = 1更改为return 1; var exponentiate = Math.pow; 我猜那是作弊。 @James 大声笑,但如果这不是一项任务,请不要重新发明*** 【参考方案1】:
    您在定义之前访问result。所以你应该把它们移到函数的顶部

    这里应该直接返回值而不是赋值

    if (power === 0) return result = 1

function exponentiate (base, power) 
  let count = 0
  let result = 1;
  if (power === 0)
    return 1
  

  // while loop 
  while (count < power)  

    result *= base
    count += 1
  
  return result 


console.log(exponentiate(3, 0))

最简单的是使用**exponent operator

const exp = (b,e)=>
  return b**e


console.log(exp(3,0))
console.log(exp(3,1))
console.log(exp(2,10))

【讨论】:

您的第 2 点实际上不是问题:return result = 1 无论如何都会返回 1(当然,为永远不会使用的变量赋值不是一个好习惯)。 @GerardoFurtado 是的,这就是我写它的原因,你应该这样做,而且在 OP 的原始代码中,结果的定义比它使用的晚。

以上是关于Javascript:当幂等于 0 时,用于解决指数问题的 While 循环出现错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决JavaScript中0.1+0.2不等于0.3

如何解决JavaScript中0.1+0.2不等于0.3

解决JavaScript中0.1+0.2不等于0.3问题

在 JavaScript 中,为啥 "0" 等于 false,但是当通过 'if' 测试时,它本身不是 false?

JavaScript操作符(关系操作符相等操作符和条件操作符)

为什么在JavaScript中0.1+0.2不等于0.3?