return

return

return语句终止函数的执行,并返回一个指定的值给函数调用者。

语法

return [[expression]];

expression被返回的表达式。如果忽略,则返回 undefined

描述

当在函数体中使用return语句时,函数将会停止执行。如果指定一个值,则这个值返回给函数调用者。例如,以下函数返回其参数x的平方,其中x是数字。如果省略该值,则返回undefined

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 语句后发现无法访问的代码,控制台将会显示一个警告。

示例

返回

下面的函数返回它的参数的平方x,其中x是一个数字。

function square(x) { return x * x; }

中断一个函数的执行

函数将会在return语句执行后立即中止。

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

返回一个函数

另见关于闭包的文章。

function magic(x) { return function calc(x) { return x * 42; }; } var answer = magic( answer(1337 // 56154

规范

SpecificationStatusComment
ECMAScript 1st Edition (ECMA-262)StandardInitial 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 Latest Draft (ECMA-262)The definition of 'Return statement' in that specification.Draft

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)