Это - действительно большая функция, записанная в 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/
Я хотел бы добавить условие протестировать на пустой указатель, но это выглядит довольно неуклюжим:
if (results == null) {
return 0;
} else {
return results[1] || 0;
}
Q: Что изящный путь состоит в том, чтобы выполнить вышеупомянутый условный оператор?
самым кратким решением было бы изменить return results [1] | | 0; от
до return (results && results [1]) || 0
.
Вы можете попробовать следующее:
if(typeof(results) == "undefined") {
return 0;
} else {
return results[1] || 0;
}
return (results||0) && results[1] || 0;
Оператор && действует как охранник и возвращает 0, если результат ложный, и возвращает крайнюю правую часть, если он правдив.
if (typeof(results)!='undefined'){
return results[1];
} else {
return 0;
};
Но вы можете проверить, являются ли результаты массивом. Массивы относятся к типу Object, поэтому вам понадобится эта функция
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;
}