Подтвердить что ты не робот

JavaScript Если условие оператора без оператора? Что оно делает?

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

Спасибо.

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

Ответ 1

Пока выражение внутри круглых скобок возвращает что-то отличное от 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>

Ответ 2

Это то же самое, что и при выполнении

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

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

Однако, это лишнее, просто подумайте об этом как (псевдокод)

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

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