Je pense que vous avez une question de méthodologie JavaScript de base ici.
Or, JavaScript est un langage faiblement typé. En tant que tel, la manière dont il traite les opérations logiques diffère de celle d'autres langages standard comme Java et C++. JavaScript utilise un concept connu sous le nom de "coercition de type" pour déterminer la valeur d'une opération logique et renvoie toujours la valeur du premier élément de l'opération logique. true
type. Par exemple, regardez le code ci-dessous :
var x = mystuff || document;
// after execution of the line above, x = document
Cela s'explique par le fait que mystuff
est un a priori entité indéfinie qui sera toujours évaluée à false
lorsqu'il est testé et, en tant que tel, JavaScript le saute et teste l'entité suivante pour une true
valeur. Puisque l'objet document est connu de JavaScript, il retourne une valeur true
et JavaScript renvoie cet objet.
Si vous vouliez qu'une valeur booléenne vous soit renvoyée, vous devriez passer votre déclaration de condition logique à une fonction de la manière suivante :
var condition1 = mystuff || document;
function returnBool(cond){
if(typeof(cond) != 'boolean'){ //the condition type will return 'object' in this case
return new Boolean(cond).valueOf();
}else{ return; }
}
// Then we test...
var condition2 = returnBool(condition1);
window.console.log(typeof(condition2)); // outputs 'boolean'