JavaScript isnull

Это - действительно большая функция, записанная в 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: Что изящный путь состоит в том, чтобы выполнить вышеупомянутый условный оператор?

11
задан Hannele 3 June 2014 в 16:30
поделиться

7 ответов

return results == null ? 0 : (results[1] || 0);
22
ответ дан 3 December 2019 в 01:13
поделиться
return results == null ? 0 : ( results[1] || 0 );
10
ответ дан 3 December 2019 в 01:13
поделиться

самым кратким решением было бы изменить return results [1] | | 0; от до return (results && results [1]) || 0 .

3
ответ дан 3 December 2019 в 01:13
поделиться

Вы можете попробовать следующее:

if(typeof(results) == "undefined") { 
    return 0;
} else {
    return results[1] || 0;
}
2
ответ дан 3 December 2019 в 01:13
поделиться
return results==null ? 0 : ( results[1] || 0 );
1
ответ дан 3 December 2019 в 01:13
поделиться
return (results||0) && results[1] || 0;

Оператор && действует как охранник и возвращает 0, если результат ложный, и возвращает крайнюю правую часть, если он правдив.

1
ответ дан 3 December 2019 в 01:13
поделиться
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;
}
1
ответ дан 3 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: