web-dev-qa-db-fra.com

Que signifie "vide 0"?

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?

459
Randomblue

Que signifie 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

Quel est le but de cela?

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.

Pourquoi 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.

Pourquoi est-ce toujours pertinent?

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.

929
Peter Olson

void 0 renvoie undefined et ne peut pas être remplacé, alors que undefined peut être remplacé.

var undefined = "HAHA";
98
epascarello

void est un mot clé JavaScript réservé. Il évalue l'expression et renvoie toujours undefined.

28
Digital Plane