Почему я вижу логические операторы, используемые в массивах или функциях? [Дубликат]

В отличие от некоторых ответов, стандарт SQL не умалчивает об этом предмете.

Начиная с SQL: 2003, вы могли использовать «функции окна» для пропуска строк и ограничения наборов результатов.

И в SQL: 2008 был добавлен несколько более простой подход, используя
OFFSET skip ROWS FETCH FIRST n ROWS ONLY

Лично я не думаю, что добавление SQL: 2008 было действительно необходимо, поэтому, если Я был ISO, я бы сохранил его из уже довольно большого стандарта.

5
задан bernie2436 7 May 2015 в 17:59
поделиться

5 ответов

Это логический оператор OR в JS (и большинстве других языков). Это значение определено в спецификации 11.11 . Как отмечено в спецификации, выражения с обеих сторон будут сначала оцениваться, а логическое ИЛИ - слева-направо ассоциативное . Обратите внимание, что оценка операндов соответствует стандартной семантике ToBoolean из раздела 9.2 , поэтому [null, undefined, 0, ''] все считаются ложными.

В отличие от большинства языков, JS возвращает левый операнд, если он прав или правый операнд в противном случае. Это поведение было рассмотрено до в ряде вопросов SO, но стоит отметить, так как большинство языков просто возвращают true или false. Это поведение часто используется для предоставления значений по умолчанию для других неопределенных переменных.

14
ответ дан Community 22 August 2018 в 12:27
поделиться
  • 1
    Он не возвращает false, если оба являются ложными; он возвращает значение правой части, независимо от того, что это может быть (так, возможно, 0, или ""). – Pointy 7 May 2015 в 18:02
  • 2
    @ Положите мою ошибку, исправлено. – ssube 7 May 2015 в 18:03
  • 3
    В отличие от большинства языков, JS возвращает левый операнд, если он правдивый или правый операнд в противном случае. & quot; немного шире. Этот подход довольно распространен среди языков сценариев с понятием «правдоподобие», например, Python и Perl. Даже Ruby имеет такое поведение, хотя это не так полезно (потому что почти все в Ruby правдиво, поэтому левая сторона должна быть принудительной для логического теста, а это означает, что это работает только для дефолта с false или nil к другому значению, а не от произвольных «ложных» объектов, таких как 0 значений, пустых последовательностей и т. д.). – ShadowRanger 22 February 2018 в 02:51

Оператор логического OR (||) - это оператор, который возвращает свой первый или второй операнд в зависимости от того, является ли первое правдоподобным. «Правное» значение означает все, кроме 0, undefined, null, "" или false.

Этот оператор использует короткое замыкание, что означает, что если первое выражение правда, тогда второе выражение не оценивается, и первый операнд немедленно возвращается. Это похоже на логический оператор И (&&) , который делает обратное: если первый операнд ложен, он возвращает его, в противном случае он возвращает второе выражение.

4
ответ дан 0x499602D2 22 August 2018 в 12:27
поделиться
  • 1
    Может кто-нибудь объяснить, что случилось с моим ответом, чтобы я мог его улучшить? – 0x499602D2 7 May 2015 в 18:07
  • 2
    Логические операторы не всегда возвращают логическое значение. – nderscore 7 May 2015 в 18:09

Он проходит независимо от того, что оценивается как истина, или sig, если оба истины.

0
ответ дан howderek 22 August 2018 в 12:27
поделиться

Это означает «или» ( http://www.w3schools.com/js/js_comparisons.asp ) Поэтому, если (sig OR graph)

БУДЬТЕ ОСТОРОЖНЫ, вы можете «коротко замыкайте» свой код, используя это. Например:

If (foo || foo2)

, если foo истинно, тогда JavaScript даже не проверит foo2 вообще, он просто пропустит его.

0
ответ дан Ian Wise 22 August 2018 в 12:27
поделиться

Оператор || означает OR.

Если любой сиг или график являются истинными или не являются нулевыми переменными, функция обратного вызова получит истинный аргумент.

-1
ответ дан n.maia 22 August 2018 в 12:27
поделиться
  • 1
    Это не то, как работает JavaScript, хотя это верно для некоторых других языков (например, Java). – Pointy 7 May 2015 в 18:03
  • 2
    Виноват. Если аргументы не являются логическими, функция обратного вызова примет первый не нулевой (или неопределенный) аргумент. – n.maia 7 May 2015 в 18:15
Другие вопросы по тегам:

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