2011-07-01 25 views
6

que tienen problemas para entender este párrafo en la página https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/void:¿Qué son exactamente las expresiones que producen * efectos secundarios *?

Este operador permite la inserción de expresiones que producen efectos secundarios en lugares donde una expresión que se evalúa como se desea definir.

¿Cuáles son exactamente las expresiones que producen efectos secundarios?

+0

'i ++' es un ejemplo simple. – Gabe

Respuesta

6

Una función hace dos cosas normalmente: Realice algo y devuelva un valor. Algunas funciones solo hacen una de esas cosas, otras hacen ambas cosas. Por ejemplo, la función:

function square(x) { 
    return x * x; 
} 

¿Está libre de efectos secundarios ya que lo único que hace es devolver un valor y su invocación siempre puede reemplazada por su valor de retorno. Por otro lado, algo como alert() solo se llama por sus efectos secundarios (alertando a un usuario) y nunca por su valor de retorno.

Lo que hace el operador void es que hace que JavaScript ignore el valor de retorno y declare que todo lo que le interesan son los efectos secundarios de la función.

+0

bien entonces ¿por qué necesitaría el vacío en absoluto? Quiero decir que simplemente puedo dejar que devuelva un valor pero no lo uso bien ...? –

+0

Casi todo se puede hacer de múltiples maneras. Esta es solo una forma de hacerlo. Realmente no se usa tanto en la realidad. –

2

Un ejemplo simple es una llamada a función. Si necesita un valor "indefinido", pero también desea llamar a una función que (digamos) realiza alguna manipulación DOM, puede "lanzar" el resultado al void y tener un resultado indefinido.

Definitivamente no creo que esto esté en las "partes buenas" del lenguaje, aunque se soluciona el hecho extraño de que "indefinido" no es realmente una palabra reservada. La expresión void 0 definitivamente va a ser realmente undefined.

+0

así que ¿estás diciendo que el único uso de 'void' es para darnos confiablemente el' indefinido'? (dado que 'undefined' no es una palabra clave en realidad puede ser reemplazado por otro valor) –

+0

Eso es todo lo que hace.Comparto cualquier sentimiento de mistificación que el operador "nulo" pueda presentarte. – Pointy

1

'Efectos secundarios' es el resultado de la función que el vacío toma como argumento. En este escenario la función F1, devuelve 'false', pero el envoltorio en 'vacío' esencialmente 'traga' que implican o 'efecto secundario':

var F1 = function() { return false; } 
void(F1()); 

favor excusa el uso gratuito de las citas ... jaja.

+0

en su ejemplo, si reemplaza su segunda línea con 'F1()', ¿está de acuerdo conmigo en que no hay absolutamente ninguna diferencia? (quiero decir, si no queremos el valor de retorno simplemente no lo use?) –

+0

quizás. Creo que la pregunta original estaba relacionada con el significado de "efectos secundarios", no si la característica del idioma era particularmente valiosa o no. Yo personalmente no veo un uso real para mí, solo estaba tratando de ayudarte a interpretar la definición. Espero que ayudó –

1

Un ejemplo es la siguiente:

<a href="javascript:void(**do stuff here**)">link</a> 

Las fuerzas de vacío que vuelva nada. Sin el vacío, el valor devuelto hará que el enlace aleje al usuario de la página.

+0

¿por qué necesito el vacío cuando puedo simplemente ** link **? –

+0

Simplemente otra forma de hacerlo. –

2

La expresión (i+=1) evalúa a i+1 pero tiene un efecto secundario de incrementar i en 1.

El propósito de void no es para enmascarar los efectos secundarios, pero específicamente para cuando se desea efectos secundarios, pero don 't quiere el resultado de la expresión.

+0

no lo entiendo si no quiero el resultado de la expresión, simplemente no uso el resultado de la devolución? Entonces, ¿por qué necesito el vacío? si quiero que se devuelva sin definir, simplemente escribo ** return undefined; ** –

+0

Eso también funciona. Sin embargo, a veces no quieres múltiples declaraciones. ¡Probablemente nunca uses este truco "vacío" en la vida real! – dkamins

Cuestiones relacionadas