2010-08-16 12 views
13

Sono abituato a se le istruzioni hanno una condizione in cui (x < y) o (x == y). Ma nei casi in cui non vi è operatore, cosa controlla esattamente l'istruzione if? Ad esempio nell'esempio seguente se (window.XMLHttpRequest) ... qual è la condizione?JavaScript Condizione dell'istruzione senza operatore? Che cosa fa?

Grazie.

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

risposta

0

Da quanto ho capito, tenterà di convertire variabili (all'interno if) per booleani, e che come al solito controllo per vero o falso. In questo caso particolare, controllerà se esiste l'elemento XMLHttpRequest della finestra. Se non c'è XMLHttpRequest, sarà NULL e quindi NULL verrà convertito in falso. P.S. Ti consiglio di trovare qualche buon riferimento javascript.

10

Finché l'espressione contenuta tra parentesi restituisce qualcosa di diverso false, null, 0, "" o undefined ... il blocco nella dichiarazione if verrà eseguito :-)

Infatti tutte le proceda in questo modo:

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

</script> 
+0

Vedere qui per le specifiche: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

Questo controlla se esiste una proprietà su window chiamato XMLHttpRequest cui "tru thiness "è vero. Javascript interpreta una varietà di valori come true: true, qualsiasi valore numerico diverso da 0, qualsiasi riferimento all'oggetto non null o (penso) qualsiasi stringa non vuota.

In questo caso, il codice verifica se il browser supporta la proprietà XMLHttpRequest, che è la funzione di costruzione per un oggetto che invia richieste asincrone al server nei browser sopra menzionati. Se il browser definisce questa funzione, l'istruzione if valuterà true.

0

in alcune lingue il predicato deve restituire un valore booleano. In javascript questo non è il caso.

Alcuni caso come 0 o false (ci potrebbero essere altri) sono false, il resto è vero

3

E 'la stessa esatta come fare

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

È possibile sostituire falsa con qualsiasi altro valore falsy (0, null, "") e funzionerebbe allo stesso modo a causa della coercizione di tipo.

Tuttavia, questo è inutile, basta pensare a come (pseudocodice)

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

Questo controlla se esiste una proprietà sulla finestra chiamata XMLHttpRequest.

Se è presente, eseguirà il codice tra parentesi sotto.

In caso contrario, restituirà false e salterà il blocco di codice.