return
return
语句结束函数执行并指定一个值返回给函数调用方。
试一试
语法
js
return;
return expression;
expression
可选-
要返回的表达式的值。如果省略,则返回
undefined
。
描述
return
语句只能在函数体内部使用。当在函数体中使用 return
语句时,函数的执行将停止。return
语句在放置在不同函数中时具有不同的效果
- 在普通函数中,对该函数的调用将计算为返回值。
- 在异步函数中,生成的 Promise 将使用返回的值解析。
- 在生成器函数中,生成的生成器对象的
next()
方法返回{ done: true, value: returnedValue }
。 - 在异步生成器函数中,生成的异步生成器对象的
next()
方法返回一个以{ done: true, value: returnedValue }
为值的已完成的 Promise。
如果在 try
块中执行 return
语句,则其 finally
块(如果存在)将在值实际返回之前首先执行。
自动分号插入
语法禁止在 return
关键字和要返回的表达式之间出现换行符。
js
return
a + b;
上面的代码由 自动分号插入 (ASI) 转换为
js
return;
a + b;
这使得函数返回 undefined
,并且 a + b
表达式永远不会被计算。这可能会在控制台中生成 警告。
为了避免此问题(防止 ASI),您可以使用括号
js
return (
a + b
);
示例
中断函数
函数在调用 return
的位置立即停止。
js
function counter() {
// Infinite loop
for (let count = 1; ; count++) {
console.log(`${count}A`); // Until 5
if (count === 5) {
return;
}
console.log(`${count}B`); // Until 4
}
console.log(`${count}C`); // Never appears
}
counter();
// Logs:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
返回函数
另请参阅有关 闭包 的文章。
js
function magic() {
return function calc(x) {
return x * 42;
};
}
const answer = magic();
answer(1337); // 56154
规范
规范 |
---|
ECMAScript 语言规范 # sec-return-statement |
浏览器兼容性
BCD 表格仅在浏览器中加载