return 表達式會終止函式執行,並指明函式呼叫器(function caller)要回傳的數值。

語法

return [[expression]]; 
expression
要被回傳的表達式。如果省略了表達式,函式就會回傳 undefined

敘述

如果在 function body 內宣告 return 的話,函式執行就會終止。如果指定數值的話,函式呼叫器就會回傳給定的數值。例如說,以下函式會回傳 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;

自動插入分號

return 宣告會受自動插入分號(automatic semicolon insertion,ASI)影響。No line terminator is allowed between the return keyword and the expression.

return
a + b;

會因為 ASI 而變成:

return; 
a + b;

主控台會警告「unreachable code after return statement」(在 return 宣告後面有無法抵達的程式碼)。

從 Gecko 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37) 開始,如果主控台發現在 return 宣告後面有無法抵達的程式碼,就會顯示警告。

要避免 ASI 問題,可以添加括號:

return (
  a + b
);

示例

終止函式

在到達呼叫 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();

// 輸出:
// 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

規範

規範 狀態 註解
ECMAScript 1st Edition (ECMA-262) Standard 初始定義
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  

瀏覽器相容性

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

參見

文件標籤與貢獻者

此頁面的貢獻者: iigmir
最近更新: iigmir,