如何检查null或未定义的方法?

时间:2019-01-25 20:54:06

标签: javascript jquery

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');
}

是否有一种不太丑陋的方法来检查nullundefined方法?我尝试了一次布尔检查:

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

但是没有用。那么,有没有更好的方法?

请注意,这不是对未定义/空变量的检查,对于SO来说,答案是一百万。

3 个答案:

答案 0 :(得分:4)

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

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...")

答案 1 :(得分:3)

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

对我有用的

答案 2 :(得分:1)

您可以使用:

检查两种情况
if (!!$('#nearby').html()) { 
  console.log('nothing here');
}

因为未定义或null均为假。