首頁 > web前端 > js教程 > 如何避免 JavaScript 中「無法讀取未定義的屬性」錯誤?

如何避免 JavaScript 中「無法讀取未定義的屬性」錯誤?

Mary-Kate Olsen
發布: 2024-12-23 01:26:09
原創
989 人瀏覽過

How Can I Avoid

避免「無法讀取未定義的屬性」錯誤

使用複雜的資料結構時,經常會遇到與未定義屬性相關的錯誤。考慮以下範例:

// This array contains a mix of nested objects and non-nested values
var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
登入後複製

存取可能不存在的巢狀物件的屬性時,迭代測試可能會導致錯誤。例如,以下程式碼在存取a.b.c 時會拋出錯誤:

for (i=0; i<test.length; i++) {
    console.log(a.b.c); // Throws error on i==1
}
登入後複製

為了避免此類錯誤,可以使用多種方法:

可選連結(ES2020 ) 和TypeScript 3.7

更新:對於現代瀏覽器和TypeScript,建議的解決方案是可選鏈(?.) 運算符:

obj?.a?.lot?.of?.properties
登入後複製

基於函數的解決方法(ES2020 之前和TypeScript 3.7 之前)

一個簡單的解決方法是使用助手function:

function getSafe(fn, defaultVal) {
  try {
    return fn();
  } catch (e) {
    return defaultVal;
  }
}

// Use the function to access the property safely
console.log(getSafe(() => obj.a.lot.of.properties));
登入後複製

此函數傳回呼叫所提供函數的結果,如果發生錯誤,則傳回預設值。使用這種方法,您可以避免錯誤並有條件地存取巢狀屬性:

console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));
登入後複製

以上是如何避免 JavaScript 中「無法讀取未定義的屬性」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板