javascript - true - js convert string to boolean




Quel est le but de new Boolean() dans Javascript? (4)

Alors que d'autres ont mentionné la théorie, permettez-moi de parler de la partie pratique:

Parce que Boolean objets Boolean (en tant qu'objets en général) sont toujours véridiques, il est considéré comme une mauvaise pratique de les utiliser. Dans de nombreuses années de programmation JS, je ne les ai jamais utilisées, et je ne me souviens pas avoir vu les Boolean dans le code des autres. Pas même une fois.

L'utilisation de valeurs primitives évitera la confusion et rendra votre code un peu plus court.

Si vous avez besoin d'un bool dans un objet, vous pouvez aussi bien utiliser un objet Object comme ceci:

foo = { value: false };

Aussi, appeler le constructeur Boolean() tant que fonction (comme dans foo = Boolean(bar) ) a le même effet que le typecasting explicite en utilisant !! et ce dernier est généralement préféré au premier.

Quelle est l'utilisation de:

var flag = new Boolean(false); 

par rapport à:

var flag = false;

Quand utiliseriez-vous réellement un new Boolean ?


Avant la question ci-dessus d'abord la fonction Boolean () , Boolean ()

Boolean(10 > 4) // return true
Boolean(4 > 9) // return false

Suivant: tout avec une valeur réelle retourne vrai. Par exemple

100
-4
4.4
"hello"
"false" // note even the string value false return true.

everthing sans valeur réelle return false

NaN 
var x = 10 / "H"; // Boolean(x); return false.
undefined
"" 
0
-0
false 
null

L'objet Boolean est maintenant un wrapper d'objet pour une valeur booléenne. La valeur transmise en tant que premier paramètre est convertie en une valeur booléenne, si nécessaire. Si la valeur est omise ou est 0, -0, null, false, NaN, undefined ou la chaîne vide ( "" ), l'objet a une valeur initiale de false. Toutes les autres valeurs, y compris tout objet ou la chaîne "false", créent un objet avec une valeur initiale de true.

Cela permet des astuces très puissantes.


Les roches de la classe booléenne. Au lieu de ce code spaghetti 🍝:

if (foo===true) this.launch();
else this.dontLaunch();

Vous pouvez faire ce que tout bon programmeur ferait et étendre le prototype!

Boolean.prototype.ifTrue=function(ifFunc,elseFunc){
    if (this.valueOf()===true) ifFunc(); 
    else elseFunc();
}
var foo=new Boolean(/*expression*/);
foo.ifTrue(this.launch.bind(this),this.dontLaunch.bind(this));

Bien mieux maintenant.


Question interessante:

Vous utilisez new Boolean pour créer un objet booléen. Il peut y avoir beaucoup de scénarios mais j'ai discuté ci-dessous un scénario.

Supposons que vous vouliez une comparaison dans votre code où vous voulez faire correspondre la valeur de chaîne et son type de données et qu'elle booléenne (vrai / faux) alors vous utiliserez new boolean au lieu d'assigner une simple fausse valeur.

var flag = false;  
var flag2 = new Boolean (false);
alert(typeof flag);  //boolean object
alert(typeof flag2); //simple object

if (flag === flag2){
    alert("Value and datatype match");
}
else{
    alert("Value and datatype do not match");
}




boolean