代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

如何检查空方法或未定义方法?

  •  3
  • AngryHacker  · 技术社区  · 5 年前

    沿着这条线的某个地方 jQuery 改变了它对不存在元素的处理。假定 #nearby 元素不存在,则

    console.log($('#nearby').html());
    

    a) jQuery <= 1.7.2 它打印出来 null

    B) jQuery > 1.7.2 它打印出来 undefined

    我正努力支持检查这两种情况。以下工作:

    if ($('#nearby').html() === null || $('#nearby').html() === undefined)
    { 
        console.log('nothing here');
    }
    

    有没有不那么难看的检查方法 无效的 未定义 方法?我尝试了布尔检查:

    (`if ($('#nearby').html()))` ...
    

    但它不起作用。那么,有更好的方法吗?

    注释 这不是支票 未定义/空变量 有一百万个答案。

    3 回复  |  直到 5 年前
        1
  •  4
  •   Shidersz    5 年前

    如果要检查元素是否存在,为什么不使用:

    If (!$('#nearby').length)
    {
        console.log("nothing here...")
    }
    

    console.log(!$('#nearby').length);
    
    if (!$('#nearby').length)
        console.log("#nearby do not exists!");
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    另一方面,如果元素存在,并且您希望检查某个方法是否可用于该元素,则可以使用 typeof

    if ($('#nearby').length && typeof($('#nearby').html) !== "function")
        console.log("html() is undefined!");
        
    if ($('#nearby').length && !typeof($('#nearby').foo) !== "function")
        console.log("foo() is undefined!");   
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="nearby"></div>

    所以,总而言之,如果您想检查元素是否不存在,或者某个方法不可用,您可以这样做。

    if (!$('#nearby').length || typeof($('#nearby').foo) !== "function")
        console.log("Nothing here...")
    
        2
  •  3
  •   Srikrushna    5 年前
    if (!$('#nearby').html() || $('#nearby').html() == null || 
      $('#nearby').html() == 'undefined') { 
         console.log('nothing here');
       }
    

    对我有用

        3
  •  1
  •   Melchia    5 年前

    您可以使用以下方法检查这两种情况:

    if (!!$('#nearby').html()) { 
      console.log('nothing here');
    }
    

    因为未定义或空都是假的。