带有和不带块语句的for循环

时间:2017-12-12 01:04:36

标签: javascript for-loop

我找了一个函数来确定一个数字是否为素数并找到了这个

for (var i = 2; i <= Math.sqrt(num); i++)
  if (num % i === 0) {
    return false;
  }
  return true;

我不明白为什么会有效,但这并不是

for (var i = 2; i <= Math.sqrt(num); i++) {
  if (num % i === 0) {
    return false;
  }
  return true;
}

具有不同功能的(缺少)块语句是什么

2 个答案:

答案 0 :(得分:0)

您的第一个代码如下所示:

SELECT benefitclaimid FROM sh_benefitclaimtype WHERE benefitclaimid <>'ESP')

注意for (var i = 2; i <= Math.sqrt(num); i++){ if (num % i === 0) { return false; } } return true; 在外面是怎样的。你的第二个代码不起作用,因为当需要检查更多数字时,它会过早地返回true。您的整个return true循环等同于

for

这显然不正确。

答案 1 :(得分:0)

让我告诉你一些你可能不知道的块(我花了一些时间才发现这个)。

当您使用循环或if-else语句时,可以忽略使用大括号{}

示例1

if (a === b){
    c = 0;
}

实际上与

相同
if (a === b)
    c = 0;

示例2

for (i = 0; i < 10; i++){
    a += 1;
}

实际上与

相同
for (i = 0; i < 10; i++)
    a += 1;

然而1

if (a === b){
    c = 0;
    d = 1;
}

不一样
if (a === b)
    c = 0;
    d = 1;

但是2

for (i = 0; i < 10; i++){
    a += 1;
    b += 1;
}

不一样
for (i = 0; i < 10; i++)
    a += 1;
    b += 1;

<强>解释

在循环和if-else语句中,块语句(由{}包围的代码对其中的代码进行分组并执行它。

但是,在没有{}的情况下,循环或if-else语句只会执行单行代码。

意思,

var a = 0,
    b = 0;
for (i = 0; i < 10; i++)
    a += 1;
    b += 1;

在这种情况下,a === 10b === 1

此外,在以下情况中,

var a = 0,
    b = 0;
if (false)
    a = 10;
    b = 10;

a === 0b === 10