如何检查传递给javascript函数的值是否为null?

时间:2013-02-04 23:59:40

标签: javascript jquery

我有以下javascript代码:

function changeButtonState(targetSelector, action, iconClass) {
    var $target = $(targetSelector);
    var $targetSpan = $(targetSelector + ' span');
    $targetSpan.removeClass('sprite-blank').addClass(iconClass);
}

如何$targetSpan.removeClass(..).addClass仅在调用函数时iconClass具有值时才能生成{{1}}。我想我感到困惑的是,我是否检查它是否已定义,或者我是否检查其长度是否为0或更长?

6 个答案:

答案 0 :(得分:4)

只需使用if语句:

if (iconClass){}

或者,typeof

if (typeof iconClass != 'undefined') {}

答案 1 :(得分:1)

if (typeof(iconClass)=='undefined') {
  // nothing was passed
}

答案 2 :(得分:1)

LIVE DEMO

if ( 'undefined' != typeof iconClass ) {  /**/  }

答案 3 :(得分:1)

您的用例必须假设iconClass是一个字符串。在这种情况下,我会建议第一个if条件。第二个可能限制性太强,通常仅在调用函数的人实际上没有传递第3个参数或传递未定义时使用。但是如果调用者传递null或空字符串,则第一个if条件也将捕获这些条件。这是最容易编写的,在Javascript中很常见,只需检查if (variable) { }因为它会捕获更多内容并且非常容易读写。

if (iconClass) {
   // Executes if iconClass is not null, not undefined, not 0, and not empty string
}
if (typeof iconClass != 'undefined') {
   // WILL execute if iconClass is null, 0, empty string
   // Only will not execute if iconClass is undefined!
}

答案 4 :(得分:0)

据推测,iconClass应该是一个字符串(类名),所以你应该测试它是否是一个字符串:

if (typeof iconClass == 'string') 

或者你可以使用正则表达式同时测试它是一个有效的类名:

if (/^[a-z][a-z0-9]*$/i.test(iconClass))

正则表达式可能需要更多字符来测试(至少连字符),我会留给你。接受What characters are valid in CSS class names?的答案可能有所帮助。

答案 5 :(得分:-1)

if(iconClass.length > 0){
    $targetSpan.removeClass('sprite-blank').addClass(iconClass);
}