JavaScript Если условие оператора без оператора? Что оно делает?
Я использую для операторов if, имеющих условие где (x < y) или (x == y). Но в тех случаях, когда оператора нет, что точно выполняет проверка if? то есть в приведенном ниже примере if (window.XMLHttpRequest)... какое условие?
Спасибо.
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
Ответы
Ответ 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 и пропустит блок кода.