C'est une très bonne fonction écrite en jQuery pour déterminer la valeur d'un champ 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/
Je voudrais ajouter une condition pour tester null, mais cela ressemble un peu à klunky:
if (results == null) {
return 0;
} else {
return results[1] || 0;
}
Q: Quelle est la manière élégante d’accomplir la déclaration ci-dessus si/alors?
return results == null ? 0 : (results[1] || 0);
return results == null ? 0 : ( results[1] || 0 );
la solution la plus laconique serait de changer return results[1] || 0;
en return (results && results[1]) || 0
.
Vous pouvez essayer ceci:
if(typeof(results) == "undefined") {
return 0;
} else {
return results[1] || 0;
}
Je préfère le style
(results || [, 0]) [1]
if (typeof(results)!='undefined'){
return results[1];
} else {
return 0;
};
Mais vous voudrez peut-être vérifier si les résultats sont un tableau. Les tableaux sont de type Object, vous aurez donc besoin de cette fonction function
function typeOf(value) {
var s = typeof value;
if (s === 'object') {
if (value) {
if (value instanceof Array) {
s = 'array';
}
} else {
s = 'null';
}
}
return s;
}
Donc, votre code devient
if (typeOf(results)==='array'){
return results[1];
}
else
{
return 0;
}
return results==null ? 0 : ( results[1] || 0 );
return (results||0) && results[1] || 0;
L'opérateur && joue le rôle de garde et renvoie le 0 si le résultat est faussé et renvoie la partie la plus à droite en cas de vérité.
Pourquoi ne pas essayer .test()
? ... Essayez son et meilleur booléen (vrai ou faux):
$.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)');
return results.test(window.location.href);
}
Didacticiel: http://www.w3schools.com/jsref/jsref_regexp_test.asp
Toutes les solutions mentionnées sont légitimes, mais si nous parlons d’élégance, je donnerai l’exemple suivant:
//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;
}
L'utilisation de la fonction isNull aide le code à être plus lisible.
Vous pouvez également utiliser l'opérateur non. Il vérifiera si une variable est nulle ou, dans le cas d'une chaîne, si elle est vide. Cela rend votre code plus compact et plus facile à lire.
Par exemple:
var pass = "";
if(!pass)
return false;
else
return true;
Cela renverrait false car la chaîne est vide. Il renverrait également false si la variable pass était null.