这个未指定的错误从何而来



我正在尝试格式化任何类型的变量以实现某种toString()方法。

它适用于非常复杂的对象和数组,处理循环引用,但是当我尝试在jQuery对象上调用它时: format($("body")) ,为了在大型复杂对象上测试它,我得到了这个错误:

Unhandled exception at line 330, column 21 in ms-appx://8b94d51c-586e-4f3f-bb9c-fa75d62508cd/js/default.js
0x80004005 - Erreur d’exécution JavaScript: Erreur non spécifiée.
0x80004005 - JavaScript Run-time Error: Unspecified error. // I translated it for you

这是我的代码(第 330 行旁边有一个// ERROR!注释):

function format(arg, parents, indent) {
    var maxParent = 25;
    if (parents === undefined) {
        parents = [];
    }
    if (indent === undefined) {
        indent = 1;
    }
    if (contains(parents, arg)) {
        return '<span class="brackets">[Circular]</span>';
    }
    if (typeof arg === 'string' && parents.length > 0) {
        return '"' + htmlEntities(arg) + '"';
    } else if (Array.isArray(arg)) {
        parents.push(arg);
        if (parents.length >= maxParent) {
            return '<span class="brackets">[Array]</span>';
        }
        var ret = "[ ";
        for (var i = 0, len = arg.length; i < len; i++) {
            if (i !== 0) {
                ret += ", ";
            }
            ret += "<br>";
            ret += addIndent(indent);
            ret += format(arg[i], parents, indent + 1);
        }
        ret += "<br>";
        ret += addIndent(indent - 1);
        ret += " ]";
        return ret;
    } else if (arg === null) {
        return '<span class="void">null</span>';
    } else if (arg === void 0) {
        return '<span class="void">undefined</span>';
    } else if (typeof arg === 'number' && (isNaN(arg) || !isFinite(arg))) {
        return '<span class="void">' + arg.toString() + '</span>';
    } else if (typeof arg === 'object' && arg !== null) {
        if (parents.length >= maxParent) {
            return '<span class="brackets">[Object]</span>';
        } else {
            parents.push(arg);
        }
        var ret = "{";
        var first = true;
        for (var key in arg) {
            if (!first) {
                ret += ", ";
            }
            else {
                first = false;
            }
            ret += "<br>";
            ret += addIndent(indent);
            ret += key;
            ret += ": ";
            if (typeof arg[key] === 'function') {
                ret += '<span class="brackets">[Function]</span>';
            } else {
                ret += format(arg[key], parents, indent + 1); // ERROR!
            }
        }
        ret += "<br>";
        ret += addIndent(indent - 1);
        ret += "}";
        remove(parents, arg);
        return ret;
    }
    return arg;
}

您知道为什么会发生此错误吗?

我能做些什么来修复它?

从我的头顶上,我可以认为当你调用格式函数时arg[key]是空的。同步 if 语句,使其仅在 arg[key] 不为 null 后执行。

最新更新