Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的if条件不能阻止我的脚本崩溃?_Javascript_Node.js_Exception_Crash_Typeerror - Fatal编程技术网

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)