Javascript isnull

时间:2009-12-14 20:58:16

标签: javascript jquery url

这是一个用jQuery编写的非常棒的函数来确定url字段的值:

$.urlParam = function(name){
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

// example.com?someparam=name&otherparam=8&id=6
$.urlParam('someparam'); // name
$.urlParam('id'); // 6
$.urlParam('notavar'); // null

http://snipplr.com/view/11583/retrieve-url-params-with-jquery/

我想添加一个条件来测试null,但这看起来有些笨拙:

if (results == null) {
    return 0;
} else {
    return results[1] || 0;
}

问:完成上述if / then语句的优雅方法是什么?

12 个答案:

答案 0 :(得分:22)

return results == null ? 0 : (results[1] || 0);

答案 1 :(得分:10)

return results == null ? 0 : ( results[1] || 0 );

答案 2 :(得分:3)

最简洁的解决方案是将return results[1] || 0;更改为return (results && results[1]) || 0

答案 3 :(得分:2)

你可以试试这个:

if(typeof(results) == "undefined") { 
    return 0;
} else {
    return results[1] || 0;
}

答案 4 :(得分:1)

if (typeof(results)!='undefined'){ 
    return results[1];
} else { 
    return 0; 
};

但您可能想检查结果是否为数组。数组是Object类型,因此您需要这个function

function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (value instanceof Array) {
                s = 'array';
            }
        } else {
            s = 'null';
        }
    }
    return s;
}

所以你的代码变成了

if (typeOf(results)==='array'){
      return results[1];
}
else
{
      return 0;
}

答案 5 :(得分:1)

return results==null ? 0 : ( results[1] || 0 );

答案 6 :(得分:1)

return (results||0) && results[1] || 0;

&&运算符作为保护,如果结果为假,则返回0,如果是真的则返回最右边的部分。

答案 7 :(得分:1)

所有提到的解决方案都是合法的,但如果我们谈论优雅,那么我将使用以下示例:

//function that checks if an object is null
var isNull = function(obj) {
  return obj == null;
}            

if(isNull(results)){
 return 0;
} else {
  return results[1] || 0;
}

使用isNull函数可以使代码更具可读性。

答案 8 :(得分:1)

我更喜欢这种风格

(results || [, 0]) [1]

答案 9 :(得分:1)

为什么不试试.test()? ...尝试它的最佳布尔值(真或假):

$.urlParam = function(name){
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)');
    return results.test(window.location.href);
}

<强>教程: http://www.w3schools.com/jsref/jsref_regexp_test.asp

答案 10 :(得分:1)

我正在使用此功能

function isNull() {
    for (var i = 0; i < arguments.length; i++) {
        if (
            typeof arguments[i] !== 'undefined'
            && arguments[i] !== undefined
            && arguments[i] != null
            && arguments[i] != NaN
            && arguments[i] 
        ) return arguments[i];
      }
}

测试

console.log(isNull(null, null, undefined, 'Target'));

答案 11 :(得分:0)

您也可以使用not运算符。它将检查变量是否为空,或者,如果是字符串,则为空。它使您的代码更紧凑,更易于阅读。

例如:

var pass = "";
if(!pass)
    return false;
else
    return true;

这将返回false,因为字符串为空。如果变量pass为null,它也将返回false。