我在Codecademy的Java语言课程的“函数部分”中了解到:要调用函数,我们必须在函数内部使用“ return”关键字。但是在Javascript课程的“数组部分”中,可以找到一个函数,而无需在该函数内部使用'return'关键字。谁能解释我何时必须在函数内使用'return'关键字以及何时需要可选关键字? 我附上代码段供您参考。
const flowers = ['peony', 'daffodil', 'marigold'];
function addFlower(arr) {
arr.push('lily');
}
addFlower(flowers);
答案 0 :(得分:3)
return关键字仅用于从函数中获取一些值给调用者,以便以后可以使用该值。如果您不想使用该函数的任何值,则可以省略return语句。
对于对象作为参数的情况,如果该对象本身被更改,则它将也更改已传递的原始副本。因此,那时也无需从函数中返回该对象。
答案 1 :(得分:2)
该函数不必必须返回任何值。
当您不需要该函数的任何内容时,则无需返回任何内容。此函数称为void函数。
如果您需要函数提供某些值,则必须将其返回。
答案 2 :(得分:2)
实际上,使用return语句可以将值返回给调用方。例如:
function add(a, b) {
return a+b;
}
var c = add(5,7);
如果具有仅执行任务而没有返回值的函数,则不要使用关键字。例如:
function sayHello() {
console.log('Hello');
}
sayHello();
注意:return语句结束该函数;返回后的语句将不会执行。
答案 3 :(得分:2)
实际上,可能需要返回一个值,就像Array.prototype.push()
一样。请参阅MDN Web Docs的文档。
function addOneFlower(flowers) {
const newFlower = "Bellflowers";
return flowers.push(newFlower);
}
const flowerArr = [];
let sizeOfFlowerArr = addOneFlower(flowerArr);
// sizeOfFlowerArr starts with 1
sizeOfFlowerArr = addOneFlower(flowerArr);
// sizeOfFlowerArr increased to 2
答案 4 :(得分:1)
当您可能想将信息从函数内部直接传输到调用方时,请使用return
。例如,addFlower
的调用者可能想知道所添加花朵的名称。那你可能会有类似的东西
const addedFlower = addFlower(flowers);
这会将addFlower
的返回值分配给addedFlower
变量。但是要使其正常工作,addFlower
应该return
一些东西,例如:
function addFlower(arr) {
arr.push('lily');
return 'lily';
}
如果您不需要直接从函数内部将信息 传递给调用者,则该函数的所有调用都应位于独立行中,例如
addFlower(flowers);
addFlower
不需要return
的任何事物(或意义)。
请注意,调用方有时可能 需要函数返回的信息,但有时调用方可能并不在意。但是该函数可能不知道哪个,因此无论如何return
都应该知道,并且函数调用者可以根据需要使用结果表达式,或者调用者可以忽略它。例如,在同一脚本中,可能会有一行像
const addedFlower = addFlower(flowers);
和另一个类似
addFlower(flowers); // Don't care about the return value
在这种情况下,addFlower
应该返回任何内容,而完全由调用者决定是否要对结果进行处理。
答案 5 :(得分:1)
该函数在被调用时将一直运行,直到返回return语句或结束为止。如果要使用具有返回值的函数,则需要在函数定义中包含return语句。
但是,如果您使用的函数没有return语句,并且可以一直运行到函数结尾,那么您不必在函数定义中包含return语句。例如:
function helloWorld() {
console.log('Hello World');
}
答案 6 :(得分:0)
我能给你的简单例子就是这个。 假设您有一些要在用户输入时要计算的未知数。 例如,您问您的用户他/她何时出生,以计算其年龄。
function calcAge(yearBorn){
var age = 2019 - yearBorn;
return 'hello user your age is ' + age;
}
calcAge(1993);
当用户为您提供她/他出生的年份时,它将被传递到yearBorn参数并根据当前年份进行计算。但是要使用它,您应该将其退还。如果不返回它,则在调用该函数时将得到“未定义”。您以前可能已经看过console.log()函数。它仅在浏览器中的dev工具上用于开发目的。如果要使用该函数的最终结果,则应使用return关键字,然后将获得计算出的年龄,而不是“未定义”!这与功能范围有关。如果您在函数外部声明了age变量,然后在函数中重新分配了它,则可以使用age而不使用如下所示的return语句。
var age2;
function calcAge2(yearBorn){
age2 = 2019 - yearBorn;
}
调用它时,由于age2是在函数外部声明的,因此您可以从全局范围访问它。即使您没有返回它,该函数调用也会根据计算结果更新age2变量。但是在全局范围内声明变量不是一个好习惯。
答案 7 :(得分:0)
在您的示例中,您已经在函数外部声明了变量。 如果使用const flowers = ['peony','daffodil','marigold'],则只需调用该函数即可将其他项推入数组。如果您在像下面这样的函数中声明了flowers数组,尽管它不是最好的例子
function addFlower() {
const flowers = ['peony', 'daffodil', 'marigold'];
flowers.push('lily');
return flowers;
}
然后,您必须使用return语句返回数组的值以供以后使用。 在您的情况下,您只是将项目添加到外部范围中声明的预先存在的数组中。 如果您不打算从函数本地范围中返回值,则不必使用return。 由于您在函数外声明了变量,因此可以像执行操作一样在不使用return语句的情况下更新这些值。但是,如果要从要使用的函数返回值,则应使用return语句。 检查以下两个示例。复制它们并在控制台中进行使用。
自从我在函数内部(在本地范围内)声明变量sum以来,第一个,我必须使用return语句来获取调用函数时计算出的值。否则,函数调用将给我未定义的值;
function add(x, y){
let sum = x + y;
return sum;
}
,但在第二个变量中,sum变量在全局范围内的函数外部声明。我在调用该函数时所做的全部工作就是更新预先存在的变量sum。因此,我不需要在这里使用return语句
let sum;
function add(x, y){
sum = x + y;
}
我给您的建议是,您对javascript的了解越多,这个点就会越多。只是继续学习。我去过那里。有时感觉没有任何意义。相信我,随着您学到的更多,这些点将会联系起来。