使用明確傳回語句傳回未定義的函數
在函數旨在檢查物件陣列中的值但持久回傳的場景中undefined,檢查函數的結構和forEach 方法的用法至關重要。
當 return 語句放置在傳遞給 forEach 的回呼函數而不是實際的 getByKey 函數中時,就會出現問題。這表示無論回呼中的 return 語句如何,函數本身總是會傳回 undefined。
要解決此問題,可以重寫該函數以正確使用return 語句:
function getByKey(key) { var found = null; data.forEach(function (val) { if (val.Key === key) { found = val; } }); return found; }
在這個修改後的程式碼中,return 語句被放置在getByKey 函數中,確保函數傳回找到的對象,或如果未找到鍵則傳回null。
或者,可以使用一個簡單的for 循環效率更高,因為它將迭代數組元素,直到找到所需的項:
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i]; } } }
需要注意的是,修改後的程式碼傳回與鍵對應的物件值,而不僅僅是鍵本身。這為存取所需數據提供了更大的靈活性。
以上是為什麼即使使用明確 return 語句,我的函數仍傳回未定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!