2011-05-25 10 views
8

Duplicar posible:
what is the point of void in javascript¿Cuál es el propósito de usar `void` aquí?

Cuál es el propósito de utilizar void aquí? si solo eliminas void(), también debería funcionar, ¿verdad?

var b=document.body; 

if(b&&!document.xmlVersion) { 
    void(z=document.createElement('script')); 
    void(z.src='http://www.google.ca/reader/ui/subscribe-bookmarklet.js'); 
    void(b.appendChild(z)); 
} 
else { 
    location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href); 
} 
+3

[Esta respuesta] (http://stackoverflow.com/questions/666936/what-is-the-point-of-void-in-javascript/666971#666971) lo explica. – drudge

+0

@onteria_ se usa como una función 3 veces diferentes –

Respuesta

3

busqué en Google el fragmento de código y parece que su típicamente incrustado en un enlace con "javascript:" en frente de ella. Para citar la referencia de Mozilla para el operador void:

JavaScript URI

Cuando un navegador sigue un javascript: URI, se evalúa el código de la URI y luego se reemplaza el contenido de la página con el valor devuelto , a menos que el valor devuelto no esté definido. El operador nulo se puede usar para regresar indefinido. Por ejemplo:

<a href="javascript:void(0);">Click here to do nothing</a> 
<a href="javascript:void(document.body.style.backgroundColor='green');">Click here for green background</a> 

Tenga en cuenta, sin embargo, que javascript: URI se encuentra a menudo desanima frente a otras alternativas, tales como eventos.

fuente: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/void

por lo que mantiene el contenido de la página que se sobrescriba cuando el código se ejecuta dentro de un enlace.

En este caso, si el código se ejecuta sin el javascript: URI, el operador nulo no debería hacer ninguna diferencia. El operador vacío simplemente evalúa su expresión de entrada y devuelve indefinido.

4

Sí. Funcionará sin vacío.

No es necesario utilizar el espacio vacío allí.

+6

.. a excepción de la parte donde reemplazará el contenido de la página. – drudge

+1

... que no sucederá, porque las declaraciones no son una expresión en un enlace 'javascript:'. – bobince

+0

es parte de un javascript: bookmarklet. [bookmarklet de suscripción de google reader] (http://forums.mozillazine.org/viewtopic.php?f = 23 yt = 2513807) –

5

void es una palabra clave que se ejecuta una expresión y devuelve undefined

void 0 === undefined

void (foo = 42) === undefined

En cuanto a cómo href="javascript:..." trabajo.

a menos que el valor devuelto no esté definido.

Debe devolver undefined o la página se sobrescribe. El uso de la palabra clave void es la forma más fácil de lograr esto.

Cuestiones relacionadas