Ceci est une très grande fonction écrite dans jQuery pour déterminer la valeur d'un champ d'URL: http://snippplr.com/view/11583/retrieve-url-params-with-jquery/ p> i Voudrais ajouter une condition à tester pour NULL, mais cela a l'air type de klunky: p> q: Quel est le moyen élégant d'accomplir la déclaration ci-dessus si / puis de la déclaration? p> p>
12 Réponses :
return results == null ? 0 : ( results[1] || 0 );
@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
if (typeOf(results)==='array'){ return results[1]; } else { return 0; }
return results == null ? 0 : (results[1] || 0);
@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 () code> est le meilleur
return results==null ? 0 : ( results[1] || 0 );
Vous venez de réécriter le code fourni par le OP pour utiliser l'opérateur ternaire au lieu de si code>.
Vous pouvez essayer ceci:
if(typeof(results) == "undefined") { return 0; } else { return results[1] || 0; }
La solution la plus terrese serait de changer les résultats de retour [1] || 0; code> à
retour (résultats && résultats [1]) || 0 code>. P>
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 code>.
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/...
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.
Toutes les solutions mentionnées sont légales, mais si nous parlons de l'élégance, je vais lancer avec l'exemple suivant: Utilisation de la fonction ISNULL aide le code plus lisible. < / p> p>
Je préfère le style
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 code> résultat de
regexp # exécuté code>.
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.
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;
Pourquoi ne pas essayer .test () code>? ... Essayez son meilleur booléen (vrai ou faux):
J'utilise cette fonction test p>
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] code> serait inutile, car si
résultats code> 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 code>.