Bonjour les agrumes
En ce moment je vois certaines choses à propos du javascript que je ne comprends pas.
Je ne parle pas de choses comme cela:
new Date("nonsens") // InvalidDate
Je comprends que le javascript prend une voie sur laquel il doit fonctionner à tout prix plutôt que de relever une erreur?
Je pense plutôt à des choses comme celles-ci:
var b = new Boolean(false)
if (b) {
console.log("b is true")
} else {
console.log("b is false")
} // b is true
Le type Boolean du javascript me fais penser à ce qui se passe en java (avec la différence entre int
et Integer
).
Cependant ce que je ne comprends pas c’est que le comportement de l’objet Boolean soit différent du comportement avec la valeur boolean.
Cependant si on prend ce code:
var b = new Boolean(true)
if (b == true) {
console.log("b is true")
} else {
console.log("b is false")
} // b is true
Il fonctionne comme prévu.
Il est vrai que le javascript à un typage faible, auquel cas il y a une conversion de l’objet Boolean en valeur. En prenant en compte cet élement on comprend ce qui se passe dans le premier exemple (comme expliqué dans la documentation).
Cependant l’exemple suivant n’est pas intuitif.
var b = new Boolean(true)
if (b === true) {
console.log("b is true")
} else {
console.log("b is false")
} // b is false
On utilise l’opérateur ===
qui n’effectue pas de convertion de type.
Pourquoi avoir un objet Boolean si troublant ?