Duplicate possible:
Que veut dire “javascript: void (0)”?
En lisant le code source Backbone.js, j'ai vu ceci:
validObj[attr] = void 0;
Qu'est-ce que void 0
? Quel est le but de l'utiliser ici?
void 0
?void
[MDN] est un mot clé de préfixe qui prend un argument et retourne toujours undefined
.
Exemples
void 0
void (0)
void "hello"
void (new Date())
//all will return undefined
Cela semble assez inutile, n'est-ce pas? S'il retourne toujours undefined
, qu'est-ce qui ne va pas avec le fait d'utiliser undefined
lui-même?
Dans un monde parfait, nous pourrions simplement utiliser undefined
en toute sécurité: c'est beaucoup plus simple et plus facile à comprendre que void 0
. Mais au cas où vous ne l'auriez jamais remarqué auparavant, , ce n'est pas un monde parfait , surtout lorsqu'il s'agit de Javascript.
Le problème avec undefined
était que undefined
n’était pas un mot réservé ( c’est en fait une propriété de l’objet global). [wtfjs] ). C'est-à-dire que undefined
est un nom de variable autorisé. Vous pouvez donc lui attribuer une nouvelle valeur selon vos propres caprices.
alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"
Remarque: Ce problème ne se pose plus dans les environnements prenant en charge ECMAScript 5 ou version ultérieure (c'est-à-dire pratiquement partout sauf IE 8), qui définit la propriété undefined
de l'objet global en lecture seule (elle est donc possible de masquer la variable dans votre propre portée locale). Toutefois, ces informations sont toujours utiles à des fins de compatibilité ascendante.
alert(window.hasOwnProperty('undefined')); // alerts "true"
alert(window.undefined); // alerts "undefined"
alert(undefined === window.undefined); // alerts "true"
var undefined = "new value";
alert(undefined); // alerts "new value"
alert(undefined === window.undefined); // alerts "false"
void
, en revanche, ne peut pas être oublié. void 0
retournera toujours undefined
. undefined
, en revanche, peut être celui que M. Javascript décide de vouloir.
void 0
, en particulier?Pourquoi devrions-nous utiliser void 0
? Quel est si spécial à propos de 0
? Ne pourrions-nous pas utiliser tout aussi facilement 1
, ou 42
, ou 1000000
ou "Hello, world!"
?
Et la réponse est oui, nous pourrions, et cela fonctionnerait tout aussi bien. Le seul avantage de transmettre 0
au lieu d'un autre argument est que 0
est court et idiomatique.
Bien que l'on puisse généralement faire confiance à undefined
dans les environnements JavaScript modernes, void 0
présente un avantage trivial: il est plus court. La différence ne suffit pas à vous inquiéter lors de l'écriture de code, mais vous pouvez en ajouter suffisamment sur des bases de code volumineuses pour que la plupart des minificateurs de code remplacent undefined
par void 0
afin de réduire le nombre d'octets envoyés au navigateur.
void 0
renvoie undefined et ne peut pas être remplacé, alors que undefined
peut être remplacé.
var undefined = "HAHA";
void
est un mot clé JavaScript réservé. Il évalue l'expression et renvoie toujours undefined
.