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

问题描述 投票:-1回答:2

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

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

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

  var result = 1
  var count = 0

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

print(power(5, 2));
javascript for-loop syntax
2个回答
1
投票

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

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

附:我评论了var count = 0,因为这基本上是代码所代表的(因为你之前称之为)。


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
© www.soinside.com 2019 - 2024. All rights reserved.