Javascript 为什么我的if条件不能阻止我的脚本崩溃?
我有一个使用终端启动的脚本,它总是运行良好,但有时会随机抛出以下错误:Javascript 为什么我的if条件不能阻止我的脚本崩溃?,javascript,node.js,exception,crash,typeerror,Javascript,Node.js,Exception,Crash,Typeerror,我有一个使用终端启动的脚本,它总是运行良好,但有时会随机抛出以下错误: TypeError:无法读取未定义的属性“Name” 由于此错误,此脚本在崩溃之前经过了多次相同的代码行。下面是有问题的一行: setTimeout(函数(){deleteAlert(数据[This].Name,intent);},2000) 如何防止程序崩溃?我试着这样做: if (data[This] && data[This].Name) { setTimeout(function() {d
TypeError:无法读取未定义的属性“Name”
由于此错误,此脚本在崩溃之前经过了多次相同的代码行。下面是有问题的一行:
setTimeout(函数(){deleteAlert(数据[This].Name,intent);},2000)代码>
如何防止程序崩溃?我试着这样做:
if (data[This] && data[This].Name) {
setTimeout(function() {deleteAlert(data[This].Name, intent); }, 2000);
} else {
console.log(colors.red('ATTENTION: ') + "alert not deleted");
}
但有时它仍然会在同一行上抛出错误。我的意思是它成功地通过data[This]&&data[This].Name,然后出错。如何更改此条件以使此错误不会使脚本崩溃 异步性
这个
如果数据[This].Name未定义,但您在两秒钟前进行了安全检查,并且在执行安全检查的那一刻和调用数据[This]的那一刻之间,可能确实会引发错误。Name
,数据
可能会更改
您应该在调用数据[This].Name
之前进行安全检查,类似于
setTimeout(() => {
if (data[This] && data[This].Name) {
deleteAlert(data[This].Name, intent)
} else {
console.log(colors.red('ATTENTION: ') + "alert not deleted")
}
}, 2000)
setTimeout(() => {
if (data[This] && data[This].Name) {
deleteAlert(data[This].Name, intent)
} else {
console.log(colors.red('ATTENTION: ') + "alert not deleted")
}
}, 2000)