TypeError
是 JavaScript 中常见的错误类型之一,表示尝试访问未定义(undefined
)或空(null
)对象的属性。在你的例子中,错误信息 TypeError: Cannot read property 'price' of undefined
表示你尝试读取一个未定义对象的 price
属性。
price
属性不存在。确保变量在使用前已被正确初始化。
let product = { price: 100 };
console.log(product.price); // 正常
可选链操作符 ?.
可以安全地访问深层嵌套对象的属性,如果中间某个属性不存在,表达式会短路返回 undefined
而不是抛出错误。
let product = {};
console.log(product?.price); // 输出: undefined,不会抛出错误
在访问属性前进行条件判断,确保对象存在。
let product = {};
if (product) {
console.log(product.price); // 正常
} else {
console.log('Product is undefined');
}
确保在数据准备好后再进行访问。
async function fetchProduct() {
let response = await fetch('/api/product');
let product = await response.json();
if (product) {
console.log(product.price);
} else {
console.log('Product data is not available');
}
}
假设我们从服务器获取一个产品对象,并尝试访问其 price
属性:
async function getProductPrice(productId) {
try {
let response = await fetch(`/api/products/${productId}`);
let product = await response.json();
// 使用可选链操作符
console.log(product?.price || 'Price not available');
// 或者使用条件判断
if (product) {
console.log(product.price);
} else {
console.log('Product not found');
}
} catch (error) {
console.error('Error fetching product:', error);
}
}
通过上述方法,可以有效避免 TypeError
并提高代码的健壮性。
领取专属 10元无门槛券
手把手带您无忧上云