以下代码失败:
let obj1,obj2;
obj2 = {
atributo: 'texto'
};
console.log(obj1.atributo);
在控制台中显示消息:
未捕获的类型错误:无法读取未定义的属性(读取“属性”)
在 Firefox (v96) 中,消息是:
未捕获的类型错误:obj1 未定义
这是什么意思,我该如何解决?
以下代码失败:
let obj1,obj2;
obj2 = {
atributo: 'texto'
};
console.log(obj1.atributo);
在控制台中显示消息:
未捕获的类型错误:无法读取未定义的属性(读取“属性”)
在 Firefox (v96) 中,消息是:
未捕获的类型错误:obj1 未定义
这是什么意思,我该如何解决?
基于错误
此错误很常见,您尝试访问不存在的元素或其值未定义
该错误意味着您无法访问该属性,但为什么呢?
在您发布的示例中,
obj1
它已声明但未使用,让我们看看测试抛出的数据类型如何解决?
对于此错误,变量的值必须为null或undefined,您可以执行以下操作:
跟随同一主题的一系列问答
让我们澄清一下它在 Javascript 中的等价物:
这是什么意思?
错误信息“Uncaught TypeError: Cannot read property 'XXX' of undefined”的含义是:
这意味着我们正在尝试访问未定义标识符的属性(属性或函数)。
在问题的示例中,发生错误是因为我们有两个变量 obj1 和 obj2,其中 obj1 没有被赋值,它是undefined。如果 obj1 相等
null
,则错误将相似。如何解决?
解决这个问题的方法是在我们的代码中查找
XXX
我们试图访问(或设置)的属性,然后查看为什么父对象是null
orundefined
。典型的原因通常是:
尝试访问由异步代码修改的变量(对 AJAX 调用或事件,如鼠标单击或击键的响应),然后再将值分配给该变量。
假设一个函数总是返回除
null
or以外的值undefined
:例如,如果这个查询返回一个包含 2 个元素的列表,但我们试图访问不存在的第三个元素: