问答详情
源自:4-2 如何判断节点是元素节点

有一点不是很理解关于try...catch

明明前边用if判断就可以把是否为元素类型判断出来了,就算是自己写的a={nodeType:1}页可以正确判断了,为什么不直接写else{return false};而是还要写try catch 语句呢。

 

提问者:糖果罐 2015-12-17 11:07

个回答

  • 李晓健
    2015-12-17 11:11:22
    已采纳

    因为如果 代码出错,整个程序就会停止,他代码放到try里  能正确执行就会正确执行,如果报错就会进入catch里面,代码还是会向后执行。不会影响整个程序。如果直接放到if里的话  if里的代码报错就算结束了  else里的return false是不会执行的。

  • 糖果罐
    2015-12-17 11:25:39

    function isElement(obj){

      if(obj&&obj.nodeType===1){

      if(window.Node&&obj instanceof Node){

      return true;

      }

      try{

      testDiv.appendChild(obj);

      testDiv.removeChild(obj);

      }

      catch(e){

      return false;

      }

      return true;

      }

      return false;

      }

    额,可能我没有表述清楚,比如上例中,我觉得try catch 根本就没有必要,直接改成else{return false;}

    就各种情况都能判断了呀。