Catch无法读取null的属性

Catch Cannot read property of null

本文关键字:属性 null 读取 Catch      更新时间:2023-09-26

在我的应用程序中,我有一个这样的代码:

"docDecesPere": $scope.orphanFatherDocumentUpload == null ?
    (
      res.candidatureSituationSociale != "undefined" ?
      res.candidatureSituationSociale.docDecesPere :
      null
    ) :
    $scope.orphanFatherDocumentUpload.name

在某些情况下,res.candidatureSituationSociale可能是未定义的,所以正如你所看到的,我已经测试过了,所以如果它没有定义,我会影响res.candidatureSituationSociale.docDecesPere"docDecesPere",但我总是收到这个错误:

Cannot read property 'docDecesPere' of null

那么,为什么我在做了测试的情况下仍然会遇到这个问题,我该如何解决呢?

您将它们封装在"中,因此需要使用typeof:

typeof res.candidatureSituationSociale != "undefined"

为了安全起见,还应添加null

typeof res.candidatureSituationSociale != "undefined" &&
res.candidatureSituationSociale != null

如果您将变量检查为"undefined",这是一个字符串,则必须使用typeof(var)

在JS中,您可以通过执行来轻松检查变量是null还是undefined

undefined || null ? 'true' : 'false'

你可能想试试这样的代码,

"docDecesPere": !$scope.orphanFatherDocumentUpload ?
    (
      res.candidatureSituationSociale ?
      res.candidatureSituationSociale.docDecesPere :
      null
    ) :
    $scope.orphanFatherDocumentUpload.name

在这种情况下,您必须确保res.candidatureSituationSociale.docDecesPere不为null。

测试变量为null或未定义的更好方法是测试它是否不等于nullundefined

res.candidatureSituationSociale != null

对于除nullundefined 之外的所有res.candidatureSituationSociale值均为true