我正试图将我的头缠在return语句上,但我看不出为什么要使用它的原因。我的代码可以很好地工作而无需使用...
在两个示例中,我的控制台都打印出10
,无论是否使用return都无关紧要。
没有回报:
var sum = 5;
function myFunction() {
sum += 5;
}
myFunction();
console.log(sum);
有回报:
var sum = 5;
function myFunction() {
return sum += 5;
}
myFunction();
console.log(sum);
答案 0 :(得分:1)
默认情况下,函数返回值 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语句,因为调用方(按钮上的侦听器)不在乎返回值是什么。
答案 1 :(得分:0)
以下是您的示例所发生的情况:
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”的方式
答案 2 :(得分:0)
这是因为您使用了在函数外部声明的(全局)变量(函数直接对其进行修改,因此无需返回值)。 但这不是编写函数的好方法,因为它们不可重用,因为它们需要使用适当的全局上下文。更好的是使用这样的东西:
function myFunction(num) {
return num += 5;
}
var sum = 5;
var result = myFunction(5) ;
console.log(result); // -> 10
此函数可以在不同的上下文中轻松使用,因为它具有参数num
并且仅在其上起作用(该函数仅使用在其声明和主体内部声明的值)
答案 3 :(得分:0)
在您的情况下,技巧是函数的作用域。在这两种情况下,变量和都是在全局范围内定义的。当您调用该函数时,它将经历以下步骤:
sum += 5
,因此实际上可以
写为sum = sum + 5
。如果您要研究第二种情况,
您会注意到变量现在增加了价值。从那以后
变量取自全局范围,您的函数对其进行了突变。
注意:在这一点上,无论您是否要退货
从功能与否。您的函数只是对外部变量进行了突变。 var result = myFunction()