jQuery.isFunction源码

var isFunction = function isFunction( obj ) {

      // Support: Chrome <=57, Firefox <=52
      // In some browsers, typeof returns "function" for HTML <object> elements
      // (i.e., `typeof document.createElement( "object" ) === "function"`).
      // We don't want to classify *any* DOM node as a function.
      return typeof obj === "function" && typeof obj.nodeType !== "number";
  };

为什么要写这句typeof obj.nodeType !== "number";
是兼容ie吗

阅读 3.7k
2 个回答

有些浏览器把dom节点的类型是function,因此我们要排除这种情况。凡是nodeType是数字类型都是节点。因此nodeType不是数值类型即排除dom节点

      // In some browsers, typeof returns "function" for HTML <object> elements
      // (i.e., `typeof document.createElement( "object" ) === "function"`).
      // We don't want to classify *any* DOM node as a function.

DOM Node 有一个数值型 nodeType 属性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进