當傳回語句斷行時,JavaScript 函數傳回「未定義」
在某些情況下,JavaScript 函數可能因以下原因無法傳回預期物件return 語句後的換行符號。當物件定義與return 語句之間透過換行符號分隔時,就會出現此問題,如範例程式碼所示:
function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; } // output = "foo1 = {"msg":"hello1"}" console.log('foo1 = ' , JSON.stringify(foo1())); //output = " foo2 = undefined " console.log('foo2 = ' , JSON.stringify(foo2()));
這些函數之間的主要差異在於return 語句和return 語句之間的換行符。 foo2.h 中的物件定義JavaScript 的自動分號插入 (ASI) 機制會在 foo2 中的 return 語句後錯誤地插入分號,從而有效地結束函數的執行而不返回物件。這會導致在字串化 foo2() 時輸出“undefined”。
要避免此問題,可以採取多種方法:
如果美觀考慮或程式碼可讀性超過了 ASI 問題的可能性,開發人員可以選擇使用分組運算子對表達式進行分組,如回應中提供的範例所示。然而,這種方法主要是偏好問題,不會影響程式碼的功能。
以上是當 Return 語句斷行時,為什麼 JavaScript 函數會回傳「未定義」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!