【问题标题】:I cannot understand this specific syntax of the RETURN instruction within the IF argument我无法理解 IF 参数中 RETURN 指令的这种特定语法
【发布时间】:2020-11-30 05:41:46
【问题描述】:

我正在通过一些练习来学习 JS。其中之一是关于编写一个检查数字是否为素数的函数。这个练习的正确答案是这个:

const isPrime = num => {
  for(let i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}

我习惯于在 if 参数内插入 return false; 并在其外部插入 return num &gt; 1;return true;,就在结束 if 参数的右括号之后,与 if 一样声明我通常告诉我的函数“如果这个条件满足,返回这个”并且在关闭 if 声明之后我告诉它“...否则返回那个”。我不明白为什么在这种情况下,两个返回指令都被插入到参数中,这背后的逻辑是什么?

【问题讨论】:

  • return num &gt; 1; 不在 if 内部。它在 for 循环之后,即如果 for 终止而不转到 if。您似乎因为缺少{}而感到困惑
  • return false 不是参数,它在 if 块的主体中​​。 return num &gt; 1if 块的主体之外,甚至在 for 循环的主体之外。如果条件语句中只有一条指令,则可以省略 {}(大括号),就像在这种情况下一样,因为你有 return false 否则你必须使用 if(num % i === 0 ) { 返回假; ... }

标签: javascript if-statement return logic


【解决方案1】:

这个

const isPrime = num => {
  for(let i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}

等价于

const isPrime = num => {
    for(let i = 2; i < num; i++){
        if(num % i === 0){
            return false;
        }
    }
    return num > 1;
}

解释

代码块通常用大括号 { code } 括起来。因此,当某些代码需要在 for 循环内或在 if 条件之后执行时,我们将其括在花括号中。但是,如果只需要在 if 之后或 for 循环内执行一条语句,我们就不必使用大括号。代码认为 if 条件/for 循环属于它之后的紧接下一行。

//if
if(condtion){
    console.log("hello world");
}
//for
for(let i=0;i<num;i++){
    console.log(i);
}

//also equals to 
if(condition)
    console.log("hello world");
//for
for(let i=0;i<num;i++)
    console.log(i);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多