我找了一个函数来确定一个数字是否为素数并找到了这个
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;
}
具有不同功能的(缺少)块语句是什么
答案 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 === 10
但b === 1
。
此外,在以下情况中,
var a = 0,
b = 0;
if (false)
a = 10;
b = 10;
a === 0
但b === 10
。