Javascript 为什么jquery源代码的这一部分没有定义?

Javascript 为什么jquery源代码的这一部分没有定义?,javascript,jquery,node.js,knockout.js,socket.io,Javascript,Jquery,Node.js,Knockout.js,Socket.io,我正在使用Jquery1.7.1构建一个应用程序,其中控制台收到一个错误: for (n = 0; n < r.length; n++) s = r[n], (e || k === s.origType) && (!c || c.guid === s.guid) && (!l || l.test(s.namespace)) && (!d || d === s.selector || d === "**" && s.select

我正在使用Jquery1.7.1构建一个应用程序,其中控制台收到一个错误:

for (n = 0; n < r.length; n++) s = r[n], (e || k === s.origType) && (!c || c.guid === s.guid) && (!l || l.test(s.namespace)) && (!d || d === s.selector || d === "**" && s.selector) && (r.splice(n--, 1), s.selector && r.delegateCount--, p.remove && p.remove.call(a, s));

这不涉及jquery,所以我不确定为什么会发生这种情况。与此相关的唯一jquery是上一个函数上的click处理程序,但它会调用一个socket.io事件,该事件会转到node.js服务器,返回的事件会调用此函数。如果有人能提供帮助,我们将不胜感激。

您的标题中的问题(“为什么jQuery源的这一部分未定义?”)已经在评论中得到了回答:jQuery源中没有未定义的部分,只是要求它处理未定义的变量

所问的问题(“为什么我会得到一个“xxx未定义”错误?”)是不可回答的,没有更多的来源来重现这个问题

在评论中,你会问另一个问题:“有人能告诉我我应该朝哪个方向看吗?”@Blazemonger给出了答案:查看JavaScript调试器以确定问题的根源

在理解这个问题时肯定会有帮助的是在使用调试器进入代码时加载。根据您在问题中发布的jQuery片段(特别是“
delegateCount--
”),我认为例外情况如下:

// Detach an event or set of events from an element
remove: function( elem, types, handler, selector, mappedTypes ) {
        // ... abbreviated

        // Remove matching events
        for ( j = 0; j < eventType.length; j++ ) {
            handleObj = eventType[ j ];

            if ( ( mappedTypes || origType === handleObj.origType ) &&
                 ( !handler || handler.guid === handleObj.guid ) &&
                 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
                 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
                eventType.splice( j--, 1 );

                if ( handleObj.selector ) {
                    eventType.delegateCount--;
                }
                if ( special.remove ) {
                    special.remove.call( elem, handleObj );
                }
            }
        }

        // ... abbreviated
}
//从元素中分离一个事件或一组事件
移除:函数(元素、类型、处理程序、选择器、mappedTypes){
//…缩写
//删除匹配的事件
对于(j=0;j

其中压缩的
s
变量与未压缩的
handleObj
变量匹配。当您在那里进入调试器时,请确保检查局部变量的值,如果需要,请在调用堆栈中检查代码调用jQuery的位置。

jQuery源代码不是未定义的。我认为您没有正确阅读错误消息。这是控制台所说的:“19:46:10.352 TypeError:s是未定义的jquery-1.7.1.js:14”,这一行是代码的第一部分。您必须理解解析器错误发生在那里。根本原因几乎可以肯定是在您的代码中,而不是在您的库中(即jQuery),我确实理解这一点,我希望有人能为我指出我应该寻找的方向。
// Detach an event or set of events from an element
remove: function( elem, types, handler, selector, mappedTypes ) {
        // ... abbreviated

        // Remove matching events
        for ( j = 0; j < eventType.length; j++ ) {
            handleObj = eventType[ j ];

            if ( ( mappedTypes || origType === handleObj.origType ) &&
                 ( !handler || handler.guid === handleObj.guid ) &&
                 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
                 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
                eventType.splice( j--, 1 );

                if ( handleObj.selector ) {
                    eventType.delegateCount--;
                }
                if ( special.remove ) {
                    special.remove.call( elem, handleObj );
                }
            }
        }

        // ... abbreviated
}