Если условие (td) в таблице [duplicate]

В современных браузерах вы можете использовать структуру данных Map вместо объекта.

Разработчик mozilla> Карта

Объект Map может выполнять итерацию своих элементов в порядке ввода ...

14
задан 16 August 2010 в 16:26
поделиться

4 ответа

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

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

0
ответ дан Davy Meers 17 August 2018 в 11:53
поделиться

Пока выражение внутри круглых скобок возвращает что-то иное, кроме 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>
13
ответ дан dkinzer 17 August 2018 в 11:53
поделиться

Это связано с тем, что механизм JavaScript заставляет любой тип в логическом состоянии при тестировании условия. Как будто вы делали

// Coerce it to a boolean using !!
if (!!window.XMLHttpRequest) {
   xmlhttp = new XMLHttpRequest();
}
2
ответ дан Juan Mendes 17 August 2018 в 11:53
поделиться
  • 1
    Это не тот самый случай, как это делать. Версия OP преобразуется в логическую (правдоподобие) и проверяет, является ли этот результат истинным. Ваша версия преобразует обе версии в числа и проверяет, не равны ли числа (window.XMLHttpRequest становится NaN, а false становится 0, NaN != 0 - true). – doubleOrt 12 April 2018 в 18:00
  • 2
    @doubleOrt Вы правы, я обновил ответ – Juan Mendes 16 May 2018 в 14:27

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

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

1
ответ дан RMorrisey 17 August 2018 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: