首頁  >  文章  >  web前端  >  為什麼 JavaScript 中「return」語句後換行會導致「undefined」?

為什麼 JavaScript 中「return」語句後換行會導致「undefined」?

Susan Sarandon
Susan Sarandon原創
2024-11-05 12:07:01346瀏覽

Why Does a Line Break After a `return` Statement Cause `undefined` in JavaScript?

理解JavaScript 中的Return 語句:為什麼換行會很棘手

在JavaScript 中,return 語句用於終止執行一個函數並向呼叫上下文傳回一個值。然而,當傳回值放在新行上時,會出現一種奇怪的行為。

問題:損壞的回傳語句

考慮以下程式碼片段:

<code class="javascript">function correct() {
  return 15;
}

function wrong() {
  return
        15;
}

console.log("correct() called : " + correct());
console.log("wrong() called : " + wrong());</code>

在此範例中, Correct() 函數傳回預期值15,而Right() 函數傳回未定義。這是令人驚訝的,因為在大多數其他語言中,return 語句後面跟著一個新行仍然會傳回正確的值。

原因:JavaScript 的自動分號插入

The理解這種行為的關鍵在於 JavaScript 的自動分號插入 (ASI) 功能。 ASI 是一種允許 JavaScript 在某些換行符處自動插入分號以確保程式碼有效執行的機制。

當 right() 中的 return 語句後面接著換行符號時,ASI 將其視為單獨的語句。結果,程式碼被解釋為:

<code class="javascript">function wrong() {
  return;
        15;
}</code>

由於第一個語句 (return;) 沒有回傳值,所以 error() 函數傳回 undefined。

解決方案:將回傳值括號中

為了確保回傳值即使在換行時也能正確傳回,有必要將其括號中。透過這樣做,可以防止 ASI 插入分號,而 return 語句仍然有效。

<code class="javascript">function wrong() {
  return(
        15);
}</code>

在這種情況下,括號表示回傳值是 return 語句的一部分。 ASI 沒有插入分號,錯誤的() 函數現在會如預期回傳 15。

以上是為什麼 JavaScript 中「return」語句後換行會導致「undefined」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn