Re[8]: Элита!
От: B0FEE664  
Дата: 22.08.18 12:57
Оценка: :)
Здравствуйте, De-Bill, Вы писали:

DB>>>В смысле, что он считал, что (a || b && c) эквивалентно ((a || b) && c), т.е. в порядке следования.

DB>>>В том случае речь шла про javascript.
BFE>>Кое-что проясняется...
BFE>>Ну, а вы как считаете? Считаете, что у && приоритет выше, чем у || ?
DB>Я не пойму, ты не понял ситуацию или просто на пустом месте хочешь удариться в демагогию?

Причём тут демагогия? На вопрос сложно ответить?

DB>Если первое, то не важно как считаю я, есть документация. http://www-lia.deis.unibo.it/materiale/JS/developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence.html там найдёшь table of precedence.


И в этой документации легко найти внутреннее противоречие:

Цитирую из вашей ссылки:

Operator precedence determines the order in which operators are evaluated. Operators with higher precedence are evaluated first.

The following table is ordered from highest (19) to lowest (0) precedence.
...
6 Logical AND left-to-right … && …
5 Logical OR left-to-right … || …

Цитирую документацию отсюда:

As logical expressions are evaluated left to right, they are tested for possible "short-circuit" evaluation using the following rules:

false && (anything) is short-circuit evaluated to false.
true || (anything) is short-circuit evaluated to true.

The rules of logic guarantee that these evaluations are always correct. Note that the anything part of the above expressions is not evaluated, so any side effects of doing so do not take effect. Also, note that the anything part of the above expression is any single logical expression (as indicated by the parentheses).


Т.е. "внезапно" операция с высоким приоритетом не вычисляется первой. Операции выполняются в порядке следования. Порядок следования для (a || b && c) не эквивалентен ((a || b) && c).
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.