1

我有以下代码:

  if (typeof $scope.grid.data == 'undefined') {
        $scope.grid.data = [];
  }
  $scope.grid.data.push(result);

我检查了未定义,但仍然收到来自推送的错误消息:

TypeError: Cannot call method 'push' of null

任何建议将不胜感激

4

2 回答 2

3

我一直很好用一个简单的:

if (!$scope.grid.data) {
    $scope.grid.data = [];
}

这应该在两种情况下(空和未定义)都可以捕获。

http://jsfiddle.net/ericjbasti/kxGJU/1/

http://jsfiddle.net/ericjbasti/kxGJU/2/

于 2013-08-16T03:44:04.623 回答
2

如错误消息所示,有问题的对象是null,而不是undefined。这两个是不同的值,您检查的方式只会检查未定义。检查对象是否是undefined 或是 利用彼此之间隐式转换的事实的最佳方法,并执行以下操作nullnullundefined

if ($scope.grid.data == null) {
于 2013-08-16T03:22:04.343 回答