【问题标题】:Why does this return statement in JavaScript return nothing?为什么 JavaScript 中的 return 语句不返回任何内容?
【发布时间】:2023-10-01 12:23:01
【问题描述】:

在将此问题标记为重复之前,请理解我是 JS 新手,总是害怕提出 * 的问题。

我不明白为什么调用这个函数不会返回任何内容,除非我将函数调用包含在 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它不输出任何内容的原因。

【问题讨论】:

  • 您需要将返回的值设置为某个值,例如const myFunctionValue = counter(["shaun", "sara", "jessica"]);,否则它只会返回字符串并且不执行任何操作。
  • 它正在返回一些东西,你只是没有使用返回的值。如果将其包装在 log 中,它会记录返回值。没有log,你想对返回值做什么?
  • 你希望在 HTML 页面上看到函数的返回值吗?
  • 是的,我希望在 html 页面中看到输出
  • 这不是 JavaScript 的工作方式,因此您需要对其进行编码以便显示。 js引擎只能做它被告知要做的事情。这不是读心术。所以你需要对innerHTML、createElement、value等做一些事情。

标签: javascript arrays return


【解决方案1】:

console.log() 是一个用于将信息打印到 安慰。另一方面,return 是一个将一些值传回的调用 直到拨打电话的地方。

通过 - CodeCademy Forum


return 终止一个函数并可能返回一个值给该函数的调用者(而)console.log() 不会影响您的代码流。

通过 - Difference between console.log and return in javascript?


检查并运行以下代码片段,以了解两者如何工作的实际示例:

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("y u 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() 返回任何内容,除非在控制台中显示串联名称。

【讨论】:

    【解决方案2】:
    var counter = function (arr) {
            return 'There are ' + arr.length + ' elements in this array';
        };
    
    let functionResult = counter(["shaun", "sara", "jessica"]);
    

    您需要将结果返回给一个变量。 然后就可以随意使用了。

    【讨论】:

      【解决方案3】:

      所以,你实际上是在返回一些东西,如果你想在另一个函数或其他地方使用这个函数的返回值,你没有办法在没有 console.log() 的情况下查看它,你可以将它分配给像

      这样的变量
      const myCounter = counter(["shaun", "sara", "jessica"])
      console.log(myCounter)
      

      所有 return 所做的只是使函数的结果可用于其他地方。如果您不通过 console.log 或其他方法(将其放入 HTML 元素或其他内容)显示它,那么您将永远不会在任何地方“看到”它,并且看起来该函数没有做任何事情,即使是。

      【讨论】: