检查变量是否适用于每个jQuery

检查变量是否适用于每个jQuery,jquery,Jquery,我个人喜欢$。每个函数-它允许以简单而平等的方式处理数组和对象。但有时,当应用程序的某些部分将非对象传递给该函数时,我会收到运行时错误“无法获取未定义的属性长度” 这种错误很难调试,因为不知道是哪一个在$上。每个函数都会导致这种错误。所以我认为,在每次$。调用之前进行对象检查对我来说更容易 如何检查对象是否适合$。每个函数?也许有一种方法可以扩展jquery函数-至少知道每个$发送了什么?因为搜索运行时错误非常困难-我有370多个$的用法。每个代码 提前谢谢 编辑: 我已经编写了一个简单的函数来

我个人喜欢$。每个函数-它允许以简单而平等的方式处理数组和对象。但有时,当应用程序的某些部分将非对象传递给该函数时,我会收到运行时错误“无法获取未定义的属性长度”

这种错误很难调试,因为不知道是哪一个在$上。每个函数都会导致这种错误。所以我认为,在每次$。调用之前进行对象检查对我来说更容易

如何检查对象是否适合$。每个函数?也许有一种方法可以扩展jquery函数-至少知道每个$发送了什么?因为搜索运行时错误非常困难-我有370多个$的用法。每个代码

提前谢谢

编辑:


我已经编写了一个简单的函数来检查一个对象是对象还是数组

function isObjectValidForEach(obj) {
    if( Object.prototype.toString.call(obj) === '[object Array]' ||  Object.prototype.toString.call(obj) === '[object Object]') {
        return true;
    }
    return false;
}

var a = [];
isObjectValidForEach(a);
//true
var b = {};
isObjectValidForEach(b);
//true
var c = "hjgfkjwe";
isObjectValidForEach(c);
//false
然后,您的代码将更改为

var obj = {1: [{}, {}], 2: []};

if(isObjectValidForEach(obj)) {
    $.each(obj, function(key, value){
       if(isObjectValidForEach(value)) {
            $.each(value, function(index, el){
                 // your code
            });
       }
    });
}

if(variableName&&variableName.length){$.each(…);}
?不过,为了得到更好、更有用的答案,您需要向我们展示一些代码,最好是再现故障的代码。请使用if/else语句进行检查,然后将变量传递给$。each。若要检查变量是否为对象,可以使用
typeof(var)
var instanceof something
。希望有帮助。您可能会出于调试目的覆盖该方法,或者创建一个自定义方法。找到一个例子。我可以在功能开始前检查一下。在整个项目中有370次。但是可能有更有效的wat吗?为什么不将现有代码放在一个try-catch中并使用适当的错误处理呢?我将用代码扩展jquery,这样我至少可以通过安慰arguments.callee.caller.toString()知道发生了什么
var obj = {1: [{}, {}], 2: []};

if(isObjectValidForEach(obj)) {
    $.each(obj, function(key, value){
       if(isObjectValidForEach(value)) {
            $.each(value, function(index, el){
                 // your code
            });
       }
    });
}