簡體   English   中英

console.log和Java函數中的return之間有什么區別?

[英]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作為快是不是素數為n % i === 0true的任何i 因此,當找到in % i === 0true ,您可以立即返回“ N不是一個質數”,從而退出循環(和函數)。
  • for循環完成后,您將返回“ N是質數”。 for -loop完成時,您還沒有return任何內容,這意味着內部的if -statement從未執行。 這意味着n % i === 0永遠不會為true ,因此N是質數。
  • 0和1是特殊情況,這是第一個if語句適用的情況。 如果正數小於2,則知道它不能為素數。
  • n % i === 0永遠不會對n / 2 + 1n之間的任何itrue ,這意味着您可以將循環的迭代次數停在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM