if(obj&&obj.nodeType === 1)
刚才那里不是要判断它的类型是否为元素节点,为什么要多一段obj&&?直接判断obj.nodeType === 1 不行吗?而且obj为什么也要判断===1?
因为 && 是短路运算符
obj&&obj.nodeType === 1
的意思就是 obj 存在,并且 obj.nodeType === 1 if里的整个表达式才为true, 如果说 obj 不存在,他的值就是undefinde ,if(obj) 就直接返回false了 不会再对后面的obj.nodeType === 1 进行判断了。如果不加obj&& 直接写成 if(obj.nodeType === 1) 这时obj不存在的话就会报错,undefinde 是不可以调用属性的 obj.nodeType 就会报错