Il semble que lorsqu'une valeur booléenne primitive est passé comme premier argument à call
ou apply
, il est en boîte automatique dans un objet Boolean
. Ceci est clair dans Firebug sur Firefox 4:
>>> (function() { return this; }).call(false)
Boolean {}
Dans l'inspecteur de Chrome, il est d'abord déroutant, mais un peu de sondage révèle la vérité:
>>> (function() { return this; }).call(false)
false
>>> typeof (function() { return this; }).call(false)
"object"
objets Tous JavaScript sont "truthy", même new Boolean(false)
et new Number(0)
. Par conséquent, en utilisant deux opérateurs de négation (l'astuce !!
) les convertit en un booléen true
.
Je l'adore! WTF javascript ?! – Prestaul
donc je suppose que la réponse à ma question de clôture, c'est quand c'est un «booléen». – Domenic