2010-08-16 6 views
13

Jestem przyzwyczajony do instrukcji if posiadających warunek gdzie (x < y) lub (x == y). Ale w przypadku, gdy nie ma operatora, co dokładnie sprawdza instrukcja if? np. w poniższym przykładzie, jeśli (window.XMLHttpRequest) ... jaki jest warunek?JavaScript Czy warunek instrukcji bez operatora? Co to robi?

Dzięki.

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

Odpowiedz

0

Jak rozumiem, spróbuje przekonwertować zmienną (wewnątrz instrukcji if) na wartość logiczną, a następnie jak zwykle sprawdzić prawdę lub fałsz. W tym konkretnym przypadku sprawdzi, czy istnieje element XMLHttpRequest okna. Jeśli nie ma XMLHttpRequest - będzie to NULL, a następnie NULL zostanie przekonwertowane na false. P.S. Polecam Ci znaleźć dobre referencje javascript.

10

Dopóki wyrażenie wewnątrz nawiasów zwraca coś innego niż false, null, 0, "" lub undefined ... blok w rachunku if zostanie wykonany :-)

W rzeczywistości wszystkie z po zadziała:

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

</script> 
+0

Zobacz tutaj pod kątem specyfikacji: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

ta sprawdza, czy istnieje obiekt na window nazwie XMLHttpRequest którego „tru thiness "jest prawdą. JavaScript interpretuje różne wartości jako prawdziwe: prawda, dowolna wartość liczbowa inna niż 0, dowolne odniesienie do obiektu nie będące null lub (myślę) dowolny niepustny ciąg.

W tym przypadku kod testuje, czy przeglądarka obsługuje właściwość XMLHttpRequest, która jest funkcją konstruktora obiektu, który wysyła asynchroniczne żądania do serwera w wyżej wymienionych przeglądarkach. Jeśli przeglądarka definiuje tę funkcję, instrukcja if będzie miała wartość true.

0

w niektórych językach predykat naprawdę musi zwrócić wartość boolowską. W javascript tak nie jest.

niektórych przypadkach jak 0 lub fałsz (nie może być inne) są fałszywe, reszta jest prawdą

3

Jest to dokładnie taki sam jak robi

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

Można wymienić fałszywe z jakąkolwiek inną wartość falsy (0, null, "") i działałoby to samo z powodu przymusu typowego.

jednak, że to niepotrzebne, tylko myśleć o tym, jak (Pseudokod)

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

ta sprawdza, czy istnieje właściwość w oknie o nazwie XMLHttpRequest.

Jeśli tak, wykona kod w nawiasach pod spodem.

W przeciwnym razie zwróci wartość false i pominie blok kodu.