2017-09-16 102 views
-2

我每周都在学javascript。 我有一个难以理解的问题。香草Javascript初学者

function power(exponent) { 
    for(var i = 0; i < exponent; i++) { 
    exponent -= 1; 
    } 
    return exponent; 
} 

document.write(power(3)); 
// result : 1 

当我内部传回报指数低于环路(结果:2)

function power(exponent) { 
    for(var i = 0; i < exponent; i++) { 
    exponent -= 1; 
    return exponent; 
    } 
} 

document.write(power(3)); 
// result : 2 

为什么有两个情况下,其结果是不等于0。我认为循环将循环三(指数 - 1),结果将等于0.

请为我解释一下吗?

感谢

+1

因为您在第一次迭代时返回。 console.log()是调试器的朋友。 – epascarello

回答

2

因为你已经得到了在循环中return关键字功能是一个循环之后返回。一个函数只能返回一次,所以一旦碰到return,它就会返回值并离开函数。如果将return移动到循环外部,则该功能将仅在循环完成后退出。

此外,通过每次减少exponent变量,您将减少循环的迭代次数(在一次迭代后,将其减少到两次,因此它只会循环两次,等等)。为了达到零,您需要将exponent的值复制到循环变量(如n)中,以便它保持不变,并且代码循环exponent次。

var n = exponent; 

for(var i = 0; i < n; i++) { 
    exponent -= 1; 
} 
return exponent; 
+1

非常感谢。我只是自学,所以我不确定背景知识。我需要学会如何解决这样的问题。因为我成为像你这样的前端开发者。你可以指出最好的方式? –