2010-08-16 15 views

Antwort

0

Wie ich verstehe, wird es versuchen, Variable (innerhalb If-Anweisung) zu Boolean zu konvertieren, und dann wie üblich nach True oder False zu überprüfen. In diesem speziellen Fall wird geprüft, ob das XMLHttpRequest Element des Fensters existiert. Wenn es keine XMLHttpRequest gibt, wird NULL sein, und dann wird NULL in false konvertiert. P.S. Ich empfehle Ihnen, eine gute JavaScript-Referenz zu finden.

10

Solange der Ausdruck in den Klammern gibt etwas anderes als false, null, 0, "" oder undefined ... der Block in der if Anweisung ausgeführt wird :-)

In der Tat alle die folgende funktioniert:

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

</script> 
+0

Siehe hier für die Spezifikation: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

Diese prüft, ob es auf window genannt eine Eigenschaft existiert XMLHttpRequest dessen „tru thiness "ist wahr. JavaScript interpretiert eine Vielzahl von Werten als wahr: Wahr, irgendein numerischer Wert, der nicht 0 ist, irgendein Nicht-Null-Objektreferenz oder (denke ich) irgendeine nicht leere Zeichenkette.

In diesem Fall testet der Code, ob der Browser die XMLHttpRequest-Eigenschaft unterstützt. Dies ist die Konstruktorfunktion für ein Objekt, das in den oben genannten Browsern asynchrone Anforderungen an den Server sendet. Wenn der Browser diese Funktion definiert, wird die if-Anweisung als wahr ausgewertet.

0

In einigen Sprachen muss das Prädikat wirklich einen booleschen Wert zurückgeben. In Javascript ist dies nicht der Fall.

Einige Fälle wie 0 oder falsch sind falsch (es könnte andere sein), der Rest ist wahr

3

Es ist genau die gleiche wie zu tun

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

Sie mit jedem anderen falsy Wert false ersetzen könnten (0, null, "") und es würde wegen der Art der Nötigung funktionieren.

Allerdings, das ist nicht notwendig, man denke nur an sie als (Pseudo-Code)

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

Es wird geprüft, ob es eine Eigenschaft auf Fenster existiert XMLHttpRequest genannt.

Wenn dies der Fall ist, wird der Code in Klammern darunter ausgeführt.

Andernfalls wird false zurückgegeben und der Codeblock übersprungen.