簡體   English   中英

為什么 JavaScript 中的這個 return 語句什么都不返回?

[英]Why does this return statement in JavaScript return nothing?

在您將此問題標記為重復之前,請理解我是 JS 新手並且總是害怕問一個關於 stackoverflow 的問題。

我不明白為什么調用這個函數什么都不返回,除非我將函數調用包含在 console.log 中。

如果我將函數調用包含在 console.log 中,我會得到預期的輸出“這個數組中有 3 個元素”,但是如果沒有 console.log,我什么也得不到。

var counter = function (arr) {
    return 'There are ' + arr.length + ' elements in this array';
};

counter(["shaun", "sara", "jessica"])

我想知道的是如何在不使用console,.log的情況下獲得這個函數的輸出,以及為什么沒有console.log它不輸出任何東西的原因。

console.log()是一個用於將信息打印到控制台的函數。 另一方面, return是將某些值傳遞回調用位置的調用。

通過 - CodeCademy 論壇


return終止一個函數並可能向該函數的調用者返回一個值(而console.log()不會影響您的代碼流。

通過 - 在 javascript 中 console.log 和 return 之間的區別?


檢查並運行以下代碼片段以獲取有關兩者如何工作的實際示例:

 var x = document.getElementById("first"); var y = document.getElementById("last"); var z = document.getElementById("output"); function printName(){ z.innerText = fullName(); } function fullName(){ console.log(x.value + " " + y.value); // this wont push the concatenated name to printName() return x.value + " " + y.value; // this will push the concatenated name to printName() alert("yu do dis?"); // this won't run anymore since the return statement above prevents the function from invoking anything else } document.getElementById("btn").addEventListener("click", printName)
 <input type="text" id ="first" /> <input type="text" id ="last" /> <button id="btn">Click Me</button> <br/> <div id="full">Hello <span id="output"></span>!!</div>


如果上面的return語句被刪除, console.log()本身不會向printName()返回任何內容,除了在控制台中顯示連接的名稱。

var counter = function (arr) {
        return 'There are ' + arr.length + ' elements in this array';
    };

let functionResult = counter(["shaun", "sara", "jessica"]);

您需要將結果返回給一個變量。 然后你可以隨意使用它。

所以,你實際上是在返回一些東西,如果你想在另一個函數或其他地方使用這個函數的返回值,你就沒有辦法在沒有 console.log() 的情況下查看它,你可以將它分配給一個變量,如

const myCounter = counter(["shaun", "sara", "jessica"])
console.log(myCounter)

return 所做的一切都是使函數的結果可用於其他地方。 如果您不通過 console.log 或其他一些方法(將其放入 HTML 元素或其他內容)顯示它,那么您將永遠不會在任何地方“看到”它,並且看起來該函數沒有執行任何操作,即使是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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