為什麼箭頭函數可能回傳未定義:明確傳回與隱式回傳難題
箭頭函數為在JavaScript 中定義函數提供了簡潔的語法。然而,在處理括號({})包裹的函數體時,初學者經常會遇到一個奇怪的問題:為什麼這些箭頭函數會傳回 undefined?
考慮下面的簡化範例:
const f = arg => { arg.toUpperCase(); }; console.log(f("testing")); // undefined
這個箭頭函數的目的是將參數轉換為大寫,但它回傳未定義。原因在於箭頭函數主體周圍的可選大括號。
與簡潔主體(不帶大括號)的箭頭函數不同,主體表達式是隱式傳回的,具有函數主體語法的箭頭函數需要一個明確傳回語句。在原始範例中,缺少明確傳回會導致傳回 undefined 而不是大寫參數。
要修正此問題,您可以使用明確回傳:
const f = arg => { return arg.toUpperCase(); }; // Explicit return ^^^^^^
或使用簡潔的正文:
const f = arg => arg.toUpperCase();
明確回傳且簡潔的範例body:
const f1 = arg => { return arg.toUpperCase(); }; console.log(f1("testing")); const f2 = arg => arg.toUpperCase(); console.log(f2("testing"));
透過遵守這些規則,您可以確保箭頭函數始終傳回預期值,無論是透過明確傳回還是隱式傳回。
以上是為什麼 JavaScript 中的某些箭頭函數會回傳「未定義」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!