2012-07-10 13 views
16

Duplicar posible:
What does “javascript:void(0)” mean?
What does void 0 mean?Cómo entender "return obj === void 0" en la fuente de subrayado?

En el archivo http://underscorejs.org/underscore.js, se puede ver un bloque de dicho código:

// Is a given variable undefined? 
_.isUndefined = function(obj) { 
    return obj === void 0; 
}; 

No entiendo la void 0 parte, es muy extraño. ¿Cómo entenderlo?

+0

http://stackoverflow.com/questions/7452341/what-does-void-0-mean – Freewind

Respuesta

11

Esta es la salida de la consola

>typeof void 0 
"undefined" 
>void 0 === undefined 
true 
>"undefined".length 
9 
>"void 0".length 
6 

Creo que están tratando de ahorrar 3 bytes de tamaño de archivo;)

Editar: Este SO respuesta tiene más sentido de utilizar void 0, como undefined es solo una propiedad del objeto window y es mutable. Por lo tanto, void 0 es una forma fiable de generar navegadores indefinidos

+2

Gracias, pero ¿hay alguna explicación sobre "vacío 0"? Estaba pensando que es una invocación de función de 'void (0)' pero falta el '()'. Parece incorrecto. – Freewind

+4

'void' es casi como' typeof' que no es una función sino un operador – Tamil

+0

Eso tiene sentido para comprender. –

7

En javascript (desde 1.1), el operador void se utiliza para evaluar una expresión y devolver undefined.

Ver ECMAScript Language Specification of the void operator

Así void 0 es una manera correcta y estándar para producir undefined.

Como es un operador, no se necesitan paréntesis.

+2

También el problema aquí es que uno podría anular global indefinido en JS y causa una gran rotura. De esta forma, las bibliotecas que usan nulo 0 son más seguras. –

Cuestiones relacionadas