2010-08-16 2 views
13

Я использую для операторов if, имеющих условие где (x < y) или (x == y). Но в тех случаях, когда оператора нет, что точно выполняет проверка if? то есть в приведенном ниже примере if (window.XMLHttpRequest) ... каково условие?JavaScript Если условие оператора без оператора? Что оно делает?

Спасибо.

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

ответ

0

Как я понимаю, он будет пытаться конвертировать переменную (внутри, если заявление) в булево, а не как обычной проверки для истинной или ложной. В этом конкретном случае он проверяет, существует ли элемент XMLHttpRequest окна. Если XMLHttpRequest отсутствует, оно будет NULL, а затем NULL будет преобразовано в false. P.S. Я рекомендую вам найти хорошую ссылку на JavaScript.

10

До тех пор, пока выражение в скобках возвращает нечто иное, чем false, null, 0, "" или undefined ... блок в if заявление будет выполнено :-)

На самом деле все из Ниже будет работать:

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

</script> 
+0

См. Здесь спецификацию: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

Проверяется, существует ли собственность на window под названием XMLHttpRequest которого «Tru тишина ". Javascript интерпретирует множество значений как истинных: true, любое число, отличное от 0, любую ненулевую ссылку на объект или (я думаю) любую непустую строку.

В этом случае код проверяет, поддерживает ли браузер свойство XMLHttpRequest, которое является конструкторной функцией для объекта, который отправляет асинхронные запросы на сервер в вышеупомянутых браузерах. Если браузер определяет эту функцию, оператор if будет оценивать значение true.

0

В некоторых языках предикат действительно должен возвращать логическое значение. В javascript это не тот случай.

Некоторые случай как 0 или ЛОЖЬ (там могут быть и другие), являются ложными, остальное верно

3

Это точно так же, как делают

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

Вы могли бы заменить ложь с любым другим falsy значением (0, null, ""), и это будет работать одинаково из-за принуждения типа.

Однако, это ненужно, просто думать об этом как (псевдокод)

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

Проверяет, существует ли свойство в окне под названием XMLHttpRequest.

Если есть, он выполнит код в скобках внизу.

В противном случае он вернет false и пропустит блок кода.