花括號放置對JavaScript 函數結果的影響
在JavaScript 中,函數內花括號的放置會顯著影響程式碼的行為。考慮以下兩個範例:
<code class="javascript">function test() { return { javascript: "fantastic" }; } var r = test(); try { alert(r.javascript); } catch (e) { alert('no - it broke: ' + typeof r); }</code>
在這種情況下,test() 函數傳回 undefined 並顯示一條警報訊息「no - it Broken: undefined」。但是,如果大括號與 return 放在同一行,如下所示:
<code class="javascript">function test() { return { javascript: "fantastic" }; } var r = test(); try { alert(r.javascript); } catch (e) { alert('no - it broke: ' + typeof r); }</code>
test() 函數將傳回一個對象,警報訊息將顯示「fantastic」。
這種差異源自於 JavaScript 的自動分號插入。當一行不以分號結尾,但可能會標記語句結束時,JavaScript 會自動插入一個分號。因此,第一個程式碼片段實際上被解釋為:
<code class="javascript">function test() { return; // inserted semicolon { javascript: "fantastic" }; }</code>
return 後的分號;終止 return 語句,導致花括號區塊成為無法存取的程式碼。因此,test() 傳回 undefined。
相較之下,第二個範例不會觸發自動分號插入,從而產生有效的物件回傳值。這相當於以下程式碼:
<code class="javascript">function test() { var myObject = new Object(); myObject.javascript = "fantastic"; return myObject; }</code>
以上是JavaScript 函數回傳中花括號的位置很重要嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!