2010-08-16 14 views
13

Estoy acostumbrado a las declaraciones que tienen una condición donde (x < y) o (x == y). Pero en los casos en que no hay operador, ¿qué verifica exactamente la declaración if? es decir, en el ejemplo a continuación if (window.XMLHttpRequest) ... ¿cuál es la condición?JavaScript ¿Condición de instrucción sin operador? ¿Qué hace?

Gracias.

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 

Respuesta

0

como yo lo entiendo, que tratará de convertir la variable (en el interior sentencia if) a boolean, y que el cheque como de costumbre para la verdadera o falsa. En este caso particular, comprobará si existe el elemento XMLHttpRequest de la ventana. Si no hay XMLHttpRequest, será NULL y luego NULL se convertirá en falso. P.S. Te recomiendo que encuentres una buena referencia javascript.

10

Mientras la expresión entre paréntesis vuelve algo más que false, null, 0, "" o undefined ... el bloque en la declaración if se ejecutará :-)

De hecho toda la siguiente trabajo:

<script> 
    if (3) { 
    alert('3'); 
    } 
    if ({}) { 
    alert('{}'); 
    } 
    if(window) { 
    alert('window!'); 
    } 
    if(true) { 
    alert('true!'); 
    } 
    if('hell yeah') { 
    alert('hell yeah!'); 
    } 

</script> 
+0

Consulte aquí para la especificación: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

Esto comprueba si existe o no una propiedad en window llamada XMLHttpRequest cuyo "tru thiness "es cierto. Javascript interpreta una variedad de valores como verdaderos: verdadero, cualquier valor numérico distinto de 0, cualquier referencia de objeto no nulo o (creo) cualquier cadena no vacía.

En este caso, el código está probando si el navegador admite la propiedad XMLHttpRequest, que es la función constructora de un objeto que envía solicitudes asincrónicas al servidor en los navegadores mencionados anteriormente. Si el navegador define esta función, la instrucción if se evaluará como verdadera.

0

en algunos idiomas el predicado realmente tiene que devolver un valor booleano. En javascript este no es el caso.

Algunas caso como 0 o falso (que puede haber otros) son falsas, el resto es cierto

3

Es exactamente el mismo que hacer

if (window.XMLHttpRequest != false) { 
    xmlhttp=new XMLHttpRequest(); 
} 

Se podría reemplazarse false con cualquier otro valor Falsy (0, nulo, "") y funcionaría igual debido a la coerción de tipo.

Sin embargo, eso es innecesario, simplemente pensar en ella como (pseudocódigo)

if (window.XmlHttpRequest exists) { 
    use window.XmlHttpRequuest 
} 
0

Esto comprueba si existe o no una propiedad en la ventana llamada XMLHttpRequest.

Si lo hay, ejecutará el código entre paréntesis debajo.

De lo contrario, devolverá falso y omitirá el bloque de código.