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
对任意 i
为 true
,您就知道 N 不是质数。因此,当您找到 i
时 n % i === 0
是 true
,您可以立即 return "N is a not a prime number",离开循环(和函数)。
- 在
for
循环结束后,您 return "N is a prime number"。当 for
-loop 结束时您还没有 return
ed 任何东西这一事实意味着里面的 if
-statement 从未被执行。这意味着 n % i === 0
永远不会是 true
,因此 N 是质数。
- 0 和 1 是特殊情况,这是第一个
if
语句的用途。如果一个正数小于 2,你就知道它不可能是素数。
对于 n / 2 + 1
和 n
之间的任何 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" 吐到控制台中。
我正在学习,所以我正在解决一个需要脚本来确定输入数字是否为素数的练习,我最初在循环中放置了一个 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
对任意i
为true
,您就知道 N 不是质数。因此,当您找到i
时n % i === 0
是true
,您可以立即 return "N is a not a prime number",离开循环(和函数)。 - 在
for
循环结束后,您 return "N is a prime number"。当for
-loop 结束时您还没有return
ed 任何东西这一事实意味着里面的if
-statement 从未被执行。这意味着n % i === 0
永远不会是true
,因此 N 是质数。 - 0 和 1 是特殊情况,这是第一个
if
语句的用途。如果一个正数小于 2,你就知道它不可能是素数。
对于 n % i === 0
永远不会是true
,这意味着您可以减少迭代次数通过在max = n / 2 + 1
. 处停止循环大约一半
n / 2 + 1
和 n
之间的任何 i
,有关演示,请参阅 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" 吐到控制台中。