12
votes

Javascript isnull

Ceci est une très grande fonction écrite dans jQuery pour déterminer la valeur d'un champ d'URL: xxx

http://snippplr.com/view/11583/retrieve-url-params-with-jquery/

i Voudrais ajouter une condition à tester pour NULL, mais cela a l'air type de klunky: xxx

q: Quel est le moyen élégant d'accomplir la déclaration ci-dessus si / puis de la déclaration?


2 commentaires

lol, morceau de code exact que j'étais sur le point de poser la question exacte. 3 ans plus tard


Le test pour résultats [1] serait inutile, car si résultats est non-NULL, cela signifie que le regex a réussi, ce qui signifie que le premier groupe capturé a également été trouvé. Donc, tout ce dont vous avez besoin est résultats? Résultats [1]: 0 .


12 Réponses :


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

3 commentaires

@DDAVIESBRACKETT: Ce n'est pas le cas: JS> Résultats = NULL; null JS> résultats [1] || 0; Typein: 2: TypeError: Les résultats n'ont pas de propriétés


Eh bien, on dirait que vous avez répondu en premier, vous obtenez donc mon uppote.


Sur la deuxième réflexion, je ne sais pas si la comparaison à NULL est l'approche la plus lisible et je pense que je préférerais quelque chose comme des résultats de retour de l'instance de tableau? (résultats [1] || 0): 0



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

0 commentaires

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

3 commentaires

@Brad qu'est-ce que (résultats [1] || 0)? Je n'ai pas vu cela auparavant.


C'est l'objet à la position de l'index 1 dans 'Résultats' ou la valeur 0.


Brad, essayez d'utiliser .test () est le meilleur



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

1 commentaires

Vous venez de réécriter le code fourni par le OP pour utiliser l'opérateur ternaire au lieu de si .



3
votes

Vous pouvez essayer ceci:

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


0 commentaires

4
votes

La solution la plus terrese serait de changer les résultats de retour [1] || 0; à retour (résultats && résultats [1]) || 0 .


3 commentaires

Je reçois une erreur "Les résultats sont nuls" en Firebug si je retourne des résultats [1] || 0


Pas besoin de la parens, c'est la précédente par défaut, donc résultats && résultats [1] || 0 .


Trop tard pour Phillip mais je vais mordre: && est un court-circuit "et" opérateur développeur.mozilla.org/en-us/docs/web/javascript/reference/...



2
votes
return (results||0) && results[1] || 0;
The && operator acts as guard and returns the 0 if results if falsy and return the rightmost part if truthy.

0 commentaires

2
votes

Toutes les solutions mentionnées sont légales, mais si nous parlons de l'élégance, je vais lancer avec l'exemple suivant: xxx

Utilisation de la fonction ISNULL aide le code plus lisible. < / p>


0 commentaires

2
votes

Je préfère le style xxx


3 commentaires

Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements d'un auteur, laissez un commentaire sous leur poste.


Cela fournit effectivement une réponse explicite à la question. Ce n'est pas une critique ou une demande de clarification. Dans quel sens n'est-il pas une réponse? C'est une construction que j'utilise tout le temps pour faire face à la question précise posée par l'OP, comment traiter de manière concise avec un null résultat de regexp # exécuté .


J'aime bien cette réponse parce que je ne trouve pas un moyen de mal interpréter et, surtout, la réponse par défaut (0) n'est spécifiée qu'une seule fois. De nombreuses erreurs de codage sont introduites lorsqu'un nombre magique particulier apparaît dans plus d'un endroit.



0
votes

Vous pouvez également utiliser l'opérateur non. Il vérifiera si une variable est nulle ou, dans le cas d'une chaîne, est vide. Il rend votre code plus compact et plus facile à lire.

Par exemple: P>

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


0 commentaires

2
votes

Pourquoi ne pas essayer .test () ? ... Essayez son meilleur booléen (vrai ou faux): xxx

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


0 commentaires

2
votes

J'utilise cette fonction xxx

test xxx


0 commentaires