尝试推送到阵列时收到错误消息

时间:2013-08-16 03:17:38

标签: javascript

我有以下代码:

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

我对未定义的检查进行了检查,但我仍然从推送中收到错误消息:

TypeError: Cannot call method 'push' of null

非常感谢任何建议

2 个答案:

答案 0 :(得分:3)

我一直都很简单:

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

这应该在两种情况下都能捕获它(null和undefined)。

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

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

答案 1 :(得分:2)

如错误消息所示,相关对象为null,而非undefined。这两个是不同的值,您检查的方式只会检查未定义。检查对象是undefined 还是 null的最佳方法是利用nullundefined之间隐式转换的事实,并做:

if ($scope.grid.data == null) {