3 回答
TA贡献1826条经验 获得超6个赞
默认情况下,函数返回值undefined。如果您希望函数返回某个其他值,则需要有一个 return 语句。
您还可以使用 return 语句根据某些逻辑停止函数的执行,再次返回一个具有某种含义或只是未定义的值。
在 OP 的第一个示例中,函数被调用并且返回值不用于任何事情,因此返回值是什么并不重要,并且不需要 return 语句。
在另一种情况下,返回值可能很重要,例如一个生成 0 到 10 之间的整数随机数的函数:
function getRandomInteger(){
return Math.floor(Math.random() * 11);
}
function showRandomNumber() {
document.getElementById('s0').textContent = getRandomInteger();
}
<button onclick="showRandomNumber()">Show random number</button>
<span id="s0"></span>
上面的getRandomInteger函数需要返回一个特定的值,所以使用了return语句。该showRandomNumber功能只是显示随机数,所以它并不需要一个return语句作为调用者(按钮上的监听器)不关心的返回值是什么。
TA贡献1840条经验 获得超5个赞
您的情况 a 的技巧是函数的范围。在这两种情况下,变量 sum 都是在全局范围内定义的。当您调用该函数时,它会经历以下步骤:
查看当前步骤中是否定义了 var sum 既然它没有在函数内部定义,那么走一步看一下外部作用域。是的,这里定义了,开始使用吧。
进行计算。您正在使用增量运算符,
sum += 5
因此实际上它可以写为sum = sum + 5
. 如果您查看第二种情况,您会注意到变量现在增加了值。而且由于该变量是从全局范围中获取的,因此您的函数只会对其进行变异。 注意:此时无论您是否从函数中返回某些内容。你的函数只是改变了外部变量。最后一步——退出函数。正如我之前所说,只有当您想直接使用函数调用的结果时,返回值才重要,例如:
var result = myFunction()
TA贡献1847条经验 获得超7个赞
这是您的示例发生的情况:
var sum = 5; //Sets the sum to =5
function myFunction() {
return sum += 5; // += reassigns the global (sum) to 10
}
myFunction();
console.log(sum);
一个更好的例子是这样的:
sum = 5;
function myFunction() {
var sumOther = sum + 5;
return sumOther;
}
console.log(“sum:” + sum); // 5
console.log(“myFunction:” + myFunction()); // 10
这就是你如何获得函数的运行而不是全局变量“sum”
添加回答
举报