删除评估值Javascript时的错误

Remove error when evaluating value Javascript

本文关键字:错误 Javascript 评估 删除      更新时间:2023-09-26

在您忽略这个问题之前,我确切地知道是什么导致了这个错误以及为什么。我有一个对象,我正在通过检查它的长度来有效地测试它是否为空;当数组为空时,每个$scope.$on('$ionicView.enter')调用大约会导致30个错误。

有没有一种方法可以阻止这些错误不断抛出/有没有更好的方法来测试数组是否填充了一些东西?

JS:

$scope.checkLeague = function () {
        if ($scope.favs.length > 0){
            return false;
        }
        return true;
    };

错误:

null is not an object (evaluating '$scope.favs.length')

编辑:深入研究该问题后,$scope.favs被初始化为null以尝试解决此错误,但在代码的后面被设置为空数组,因为这是REST响应。问题仍然在于成功捕获一个总是实例化但可能为空的数组。将阵列记录到控制台将始终生成[]

尝试在之前检查$scope.favs值

$scope.checkLeague = function () {
        if ($scope.favs && $scope.favs.length > 0){
            return false;
        }
        return true;
    };

你可以试试这样的东西:

$scope.checkLeague = function () {
    if ($scope.favs.hasOwnProperty("length") && $scope.favs.length > 0){
        return false;
    }
    return true;
};

值为"0"或null的长度属性并不一定意味着对象为空。检查

var a = [1,2,3,4];
a.key1 = "test";
a.length; // <- 4
Object.keys(a); // <- ["0", "1", "2", "3", "key1"]
a.length = null;
a; // <- [];
Object.keys(a); // <- ["key1"]
Object.getOwnPropertyNames(a); // <- ["length", "key1"]

您可能需要检查Object.keys().length