理解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中文網其他相關文章!