分号如何在for循环中工作?

时间:2015-04-06 14:48:25

标签: javascript for-loop syntax

我正在编写一个函数,在不使用指数运算符的情况下将值提升到另一个值。我理解这些循环的语法是初始值在​​第一个分号之前,第一个和第二个分号之间,第二个分号之后是循环操作。

我很困惑,因为我认为这段代码应该被破坏,但它似乎返回正确的值。当我将result *=基于count++放在括号内时,代码不会返回正确的值。这是为什么?



//Power function
function power(base, exponent) {

  var result = 1
  var count = 0

  for (; count < exponent; count++)
    result *= base
  return result;
}

print(power(5, 2));
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

在这种情况下,空白;只是一个占位符。因为您在此count = 0循环之上声明了for,所以此;就在那里,因此声明不会被覆盖:

var count = 0;
for(/*var count=0*/; count < 4; count++){
  document.write(count);
}

P.S。我评论了var count = 0,因为这基本上是代码所代表的内容(因为你之前已经调用过)。

答案 1 :(得分:1)

可以在javascript中执行您想要的操作。我认为唯一的问题是你没有使用括号。这会奏效。

//Power function
function power(base, exponent){

  var result = 1;
  var count = 0;

  for (; count < exponent; count++, result *= base) {}   
  return result;
}

document.write(power(5, 2));
//returns 25

但这不会因为即使你没有缩进返回,它也会在for循环中执行并在第一次迭代期间返回。当我尝试你的代码snipplet时,我遇到了这个问题,所以我认为这是你的问题:

//Power function
function power(base, exponent){

  var result = 1;
  var count = 0;

  for (; count < exponent; count++, result *= base)   //notice the missing brackets
  return result;
}

document.write(power(5, 2));
//returns 25