Catch无法读取null属性

时间:2016-05-04 09:35:39

标签: javascript

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

"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

那么,即使我对它进行了测试,为什么我会得到它,我该如何解决呢?

3 个答案:

答案 0 :(得分:2)

您将其封在"中,因此您需要使用typeof

typeof res.candidatureSituationSociale != "undefined"

为安全起见,还要添加null

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

答案 1 :(得分:1)

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

res.candidatureSituationSociale != null
res.candidatureSituationSocialenull

之外的所有undefined

均为true

答案 2 :(得分:1)

如果您将变量检查为"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不为空。