The return statement ends function execution and specifies a value to be returned to the function caller.
return [[expression]];
expressionundefined is returned instead.When a return statement is called in a function, the execution of this function is stopped. If specified, a given value is returned to the function caller. If the expression is omitted, undefined is returned instead. The following return statements all break the function execution:
return; return true; return false; return x; return x + y / 3;
The return statement is affected by automatic semicolon insertion (ASI). No line terminator is allowed between the return keyword and the expression.
return a + b;
is transformed by ASI into:
return; a + b;
The console will warn "unreachable code after return statement".
The following function returns the square of its argument, x, where x is a number.
function square(x) {
return x * x;
}
A function immediately stops at the point where return is called.
function counter() {
for (var count = 1; ; count++) { // infinite loop
console.log(count + 'A'); // until 5
if (count === 5) {
return;
}
console.log(count + 'B'); // until 4
}
console.log(count + 'C'); // never appears
}
counter();
// Output:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
See also the article about Closures.
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) The definition of 'Return statement' in that specification. | Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Return statement' in that specification. | Standard | |
| ECMAScript 2017 Draft (ECMA-262) The definition of 'Return statement' in that specification. | Draft |
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return