这是一个用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语句的优雅方法是什么?
答案 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。