return语句终止函数的执行,并返回一个指定的值给函数调用者。
语法
return [[expression]];
-
expression -
表达式的值会被返回。如果忽略,则返回
undefined。
描述
当在函数体中使用return语句时,函数将会停止执行。如果指定一个值,则这个值返回给函数调用者。例如,以下函数返回其参数x的平方,其中x是数字。
function square(x) {
return x * x;
}
var demo = square(3);
// demo will equal 9
如果省略该值,则返回undefined。
下面的 return 语句都会终止函数的执行:
return; return true; return false; return x; return x + y / 3;
自动插入分号
自动插入分号(ASI) 规则会影响 return 语句。在 return 关键字和被返回的表达式之间不允许使用行终止符。
return a + b;
根据 ASI,被转换为:
return; a + b;
控制台会警告“unreachable code after return statement”。
从 Gecko 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37)开始,如果在一个 return 语句后发现无法访问的代码,控制台将会显示一个警告。
示例
中断一个函数的执行
函数将会在return语句执行后立即中止。
function counter() {
for (var count = 1; ; count++) { // 无限循环
console.log(count + "A"); // 执行5次
if (count === 5) {
return;
}
console.log(count + "B"); // 执行4次
}
console.log(count + "C"); // 永远不会执行
}
counter();
// Output:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
返回一个函数
另见关于闭包的文章。
function magic(x) {
return function calc(x) { return x * 42};
}
var answer = magic();
answer(1337); // 56154
规范
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. |
| ECMAScript 5.1 (ECMA-262) Return statement |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) Return statement |
Standard | |
| ECMAScript Latest Draft (ECMA-262) Return statement |
Draft |
浏览器兼容
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out
https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
return |
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support Yes | Safari Full support Yes | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support 1.0 | nodejs Full support Yes |
Legend
- Full support
- Full support