En JavaScript, comme spécifié par ECMAScript 5, tous les objets (non primitifs) sont évalués à true
(on dit en anglais qu'ils sont truthy). Certains sont évalués à false
(ils sont dits falsy) :
- falsy :
undefined
,null
,false
,+0
,-0
,NaN
,''
- truthy : tous les autres
Tous ? En JavaScript oui. Mais lorsqu'on se trouve côté client (donc avec l'objet window
en plus), il y a un intru dans le DOM qui résiste à la norme. Il s'agit de document.all
.
Pourquoi ? Pour ne pas casser certains sites archaïque qui utilisaient cette propriété dépréciée afin de différencier Netscape de IE5.
http://stackoverflow.com/questions/10350142/why-is-document-all-falsy/10394873#10394873 http://lists.w3.org/Archives/Public/public-script-coord/2009OctDec/0059.html https://bugzilla.mozilla.org/show_bug.cgi?id=248549