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" 等于 false,但是当通过 'if' 测试时,它本身不是 false?