Javascript isnull
C'est vraiment une 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 la valeur null, mais cela ressemble un peu klunky:
if (results == null) {
return 0;
} else {
return results[1] || 0;
}
Q: Quelle est la façon élégante d'accomplir la déclaration ci-dessus si/puis?
11 réponses
la solution la plus courte serait de changer return results[1] || 0;
return (results && results[1]) || 0
.
Vous pouvez essayer ceci:
if(typeof(results) == "undefined") {
return 0;
} else {
return results[1] || 0;
}
return (results||0) && results[1] || 0;
l'opérateur & & agit en tant que gardien et renvoie le 0 si si les résultats sont faux et renvoie la partie la plus à droite si elle est vraie.
if (typeof(results)!='undefined'){
return results[1];
} else {
return 0;
};
Mais vous pourriez vouloir vérifier si le résultat est un tableau. Les tableaux sont des objets de type donc vous aurez besoin de ceci function
function typeOf(value) {
var s = typeof value;
if (s === 'object') {
if (value) {
if (value instanceof Array) {
s = 'array';
}
} else {
s = 'null';
}
}
return s;
}
alors votre code devient
if (typeOf(results)==='array'){
return results[1];
}
else
{
return 0;
}
toutes les solutions mentionnées sont légitimes mais si nous parlons d'élégance alors je vais lancer avec 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.
Pourquoi ne pas essayer .test()
? ... Essayez son et de la meilleure valeur booléenne (true ou false):
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)');
return results.test(window.location.href);
}
Tutoriel: http://www.w3schools.com/jsref/jsref_regexp_test.asp
Vous pouvez également utiliser l'opérateur not. Il vérifiera si une variable est nulle, ou, dans le cas d'une chaîne, vide. Il rend votre code plus compact et plus facile à lire.
Par exemple:
var pass = "";
if(!pass)
return false;
else
return true;
ceci retournerait false parce que la chaîne est vide. Il retournerait aussi false si la variable pass était nulle.