未捕获的类型错误:无法读取未定义对象的属性(JavaScript)
在 JavaScript 中定义的六种基本类型(即布尔值、字符串、符号、数字、Null 和 undefined)中,没有其他类型像 Undefined 那样抛出那么多错误。
脚本遇到未初始化的变量或对象时,最常遇到的错误就是这个错误。
描述
“Undefined”是全局对象的一个属性。如果您没有为变量赋值,则其类型为“undefined”。当被求值的变量没有被赋值时,代码也会返回undefined值。
代码结构
function test(t) { //定义一个函数
if (t === undefined) { //如果 t=undefined,调用 tt
console.log(t.tt) //从 t 中调用 t 成员
}
返回 t;
}
var a; //a 是一个未定义值的变量
console.log(test(a)); //函数调用
错误
运行这段代码后,你会得到:
调试
如果出现未定义错误,则需要确保抛出未定义错误的变量已被赋值。
function test(t) { //定义一个函数
if (t === undefined) { //如果 t=undefined,调用 tt
console.log(t) //调用 t
}
返回 t;
}
var a=10; //a 是一个未定义值的变量
console.log(test(a)); //函数调用
当我给 a 赋值后,该函数将返回由 a=10 映射得到的 t 的值。
输出= 10
防患于未然。
能够使用未初始化的变量/对象是 JavaScript 相对于其他语言(例如 Java、C 等)的优势之一。很多时候,开发者会忍不住使用这个特性,尽管这并非最佳实践。因此,如果你是一个习惯于不初始化变量的开发者,至少可以通过简单的语句来尝试在问题发生之前将其捕获。
如果 (typeof(jsvariable) == 'undefined') {
...
}
希望这能帮您解决一些问题。如果您遇到任何错误或有其他方法,请在下方评论区留言。
原文出处:LambdaTest博客
相关帖子:
文章来源:https://dev.to/lambdatest/uncaught-typeerror-cannot-read-property-of-undefined-in-javascript-2ebe