在将此问题标记为重复之前,请了解我是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却不输出任何内容的原因。
答案 0 :(得分:1)
console.log()
是用于将信息打印到打印机的功能。 安慰。另一方面,return
是调用以将一些值传回 直到拨打电话的地方。
return
终止一个函数,并可能向该函数的调用者返回一个值(而console.log()
不会影响代码流。
检查并运行以下代码段,以获取有关两者如何工作的实际示例:
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()
返回任何内容,除非在控制台中显示串联的名称。
答案 1 :(得分:0)
var counter = function (arr) {
return 'There are ' + arr.length + ' elements in this array';
};
let functionResult = counter(["shaun", "sara", "jessica"]);
您需要将结果返回到变量。 然后,您可以根据需要使用它。
答案 2 :(得分:0)
因此,您实际上是在返回某些东西,如果您想在另一个函数中或其他地方使用此函数的返回值,则没有console.log()就无法查看它。像
这样的变量const myCounter = counter(["shaun", "sara", "jessica"])
console.log(myCounter)
所有返回的工作就是使函数的结果可用于其他地方。如果您不是通过console.log或其他方法(将其放入HTML元素或其他内容)来显示它,则您永远不会在任何地方“看到”它,并且看起来该函数没有做任何事情,即使是。