Javascript isnull - PullRequest
       25

Javascript isnull

10 голосов
/ 14 декабря 2009

Это действительно замечательная функция, написанная в 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;
}

В: Какой элегантный способ выполнить вышеприведенное выражение if / then?

Ответы [ 12 ]

22 голосов
/ 15 декабря 2009
return results == null ? 0 : (results[1] || 0);
10 голосов
/ 15 декабря 2009
return results == null ? 0 : ( results[1] || 0 );
3 голосов
/ 15 декабря 2009

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

2 голосов
/ 15 декабря 2009

Вы можете попробовать это:

if(typeof(results) == "undefined") { 
    return 0;
} else {
    return results[1] || 0;
}
1 голос
/ 09 марта 2019

Я использую эту функцию

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'));
1 голос
/ 30 ноября 2016

Почему бы не попробовать .test()? ... Попробуйте свой лучший логический (true или false):

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

Учебник http://www.w3schools.com/jsref/jsref_regexp_test.asp

1 голос
/ 28 сентября 2014

Я предпочитаю стиль

(results || [, 0]) [1]
1 голос
/ 01 сентября 2014

Все упомянутые решения являются законными, но если мы говорим об элегантности, я приведу следующий пример:

//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 помогает сделать код более читабельным.

1 голос
/ 15 декабря 2009
return (results||0) && results[1] || 0;

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

1 голос
/ 15 декабря 2009
return results==null ? 0 : ( results[1] || 0 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...