Javascript is null

Dit is echt een geweldige functie geschreven in jQuery om de waarde van een url-veld te bepalen:

$.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/

Ik zou graag een voorwaarde willen toevoegen om te testen op null, maar dit ziet er nogal onhandig uit:

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

V: Wat is de elegante manier om de bovenstaande if/then-verklaring te bereiken?


Antwoord 1, autoriteit 100%

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

Antwoord 2, autoriteit 44%

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

Antwoord 3, autoriteit 15%

de meest beknopte oplossing zou zijn om return results[1] || 0;om return (results && results[1]) || 0.


Antwoord 4, autoriteit 11%

Je zou dit kunnen proberen:

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

Antwoord 5, autoriteit 7%

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

Antwoord 6, autoriteit 7%

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

De && operator fungeert als bewaker en retourneert de 0 als resultaten als onwaar en retourneert het meest rechtse deel als waarheidsgetrouw.


Antwoord 7, autoriteit 7%

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

Maar misschien wilt u controleren of de resultaten een array zijn. Arrays zijn van het type Object, dus u hebt deze functie

nodig

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

Dus je code wordt

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

Antwoord 8, autoriteit 7%

Alle genoemde oplossingen zijn legitiem, maar als we het over elegantie hebben, zal ik het volgende voorbeeld geven:

//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;
}

Het gebruik van de isNull-functie helpt de code leesbaarder te maken.


Antwoord 9, autoriteit 7%

Ik geef de voorkeur aan de stijl

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

Antwoord 10, autoriteit 7%

Waarom probeert u .test()niet? … Probeer zijn en beste boolean (waar of onwaar):

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

Instructie:
http://www.w3schools.com/jsref/jsref_regexp_test.asp


Antwoord 11, autoriteit 7%

Ik gebruik deze functie

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];
      }
}

test

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

Antwoord 12

U kunt ook de operator not gebruiken. Het zal controleren of een variabele null is, of, in het geval van een string, leeg is. Het maakt uw code compacter en gemakkelijker te lezen.

Bijvoorbeeld:

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

Dit zou false retourneren omdat de tekenreeks leeg is. Het zou ook false retourneren als de variabele pass null was.

Other episodes