Javascript 函数中的 console.log 和 return 有什么区别?

what is the difference between console.log and return in a Javascript function?

我正在学习,所以我正在解决一个需要脚本来确定输入数字是否为素数的练习,我最初在循环中放置了一个 console.log,当数字 6 被测试时,它两次打印出 6 不是质数,然后打印另一个字符串“6 is a prime number”。

我不明白为什么要这样输出,为什么false/not一个质数打印了两次,为什么正好两次?然后打印 true/prime number.

但是,我尝试修改函数并将 console.log 替换为 return,并且函数运行良好。

我知道return跳出了函数,但它也跳出了循环吗?

尽管该功能有效,但我只是想知道为什么会这样,我听起来可能很傻,但我仍然是初学者,所以非常感谢您的帮助,这是我的代码。提前致谢

function prime(n){
    for (var i = 2; i<n; i++){
        if (n%i==0) {
            return n + " is a not a prime number"
        } else if (n%i !== 0 ){
            return n + " is a prime number"
        }
    }
}

在我的理解中,return 将停止函数并且 return 一个 final 结果,而 console.log 将简单地记录到控制台,而不停止功能。因此,当您的函数使用 return 时,它会从 运行 循环中完全停止您的函数。

console.log 只是向控制台输出一条消息。就是这样。

return 将退出当前正在执行的函数。

示例:

function printStuff() {
  console.log("I'll print out");
  console.log("So will I");
  return;
  console.log("I won't :(");
}

return 也用于 return 来自函数的值。然后,您可以在各种地方使用该值,例如 console.log.

示例:

function add(x, y) {
  return x + y;
}
var four = add(2, 2);
console.log(four); // 4
console.log(add(four, 2)); // 6

这就是您想要的:

function prime(n) {
    if (n < 2) {
        return n + " is a not a prime number";
    }
    for (var i = 2, max = n / 2 + 1; i < max; i++) {
        if (n % i === 0) {
            return n + " is a not a prime number";
        }
    }
    return n + " is a prime number";
}

解释:

  • 只要 n % i === 0 对任意 itrue,您就知道 N 不是质数。因此,当您找到 in % i === 0true,您可以立即 return "N is a not a prime number",离开循环(和函数)。
  • for 循环结束后,您 return "N is a prime number"。当 for-loop 结束时您还没有 returned 任何东西这一事实意味着里面的 if-statement 从未被执行。这意味着 n % i === 0 永远不会是 true,因此 N 是质数。
  • 0 和 1 是特殊情况,这是第一个 if 语句的用途。如果一个正数小于 2,你就知道它不可能是素数。
  • 对于 n / 2 + 1n 之间的任何 i
  • n % i === 0 永远不会是 true,这意味着您可以减少迭代次数通过在 max = n / 2 + 1.
  • 处停止循环大约一半

有关演示,请参阅 this Fiddle

"return" 将值发送回函数的调用者。例如

var a = function() { 
    return "word";

    console.trace("hellllooooo");
}()

a,现在等于字符串单词。

此外,它会停止执行当前函数,因此永远不会调用 console.trace 命令。


另一方面,

"console.log()" 将括号内的内容写入控制台(包含在大多数浏览器的开发工具中)。

因此,console.log("words phrases nouns") 将 "words phrases and nouns" 吐到控制台中。