[英]what is the difference between console.log and return in a Javascript function?
我正在學習,所以我正在解決一個練習,該練習需要腳本來確定輸入數字是否為質數,我最初將console.log放入循環中,並在測試數字6時打印出6而不是質數兩次,然后打印另一個字符串“ 6是質數”。
我不明白為什么會給出這樣的輸出,為什么虛假/不是素數打印兩次,為什么精確地打印兩次? 然后打印一次真/質數。
但是,我嘗試修改該功能,並用return替換console.log,該功能運行良好。
我知道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"
}
}
}
console.log
只會向控制台輸出一條消息。 而已。
return
將退出當前執行的函數。
例:
function printStuff() {
console.log("I'll print out");
console.log("So will I");
return;
console.log("I won't :(");
}
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
以我的理解,return將停止該函數並返回最終結果,而console.log會將其簡單地記錄到控制台,而不會停止該函數。 因此,當您使用函數return時,它使函數無法完全運行循環。
這就是你要的:
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
是true
的任何i
。 因此,當找到i
的n % i === 0
為true
,您可以立即返回“ N不是一個質數”,從而退出循環(和函數)。 for
循環完成后,您將返回“ N是質數”。 當for
-loop完成時,您還沒有return
任何內容,這意味着內部的if
-statement從未執行。 這意味着n % i === 0
永遠不會為true
,因此N是質數。 if
語句適用的情況。 如果正數小於2,則知道它不能為素數。 n % i === 0
永遠不會對n / 2 + 1
和n
之間的任何i
為true
,這意味着您可以將循環的迭代次數停在max = n / 2 + 1
,從而將循環的迭代次數減少約一半。 看到這個小提琴演示。
“返回”將值發送回函數的調用者。 例如
var a = function() {
return "word";
console.trace("hellllooooo");
}()
a,現在等於字符串詞。
另外,它會停止執行當前函數,因此將永遠不會調用console.trace命令。
另一方面,“ console.log()”將括號內的內容寫入控制台(包含在大多數瀏覽器的開發工具中)。
因此, console.log("words phrases nouns")
會將“單詞短語和名詞”吐到控制台中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.