Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 15.05.2020, 11:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от voraa
это не спецификация, а только ее трактовка
То есть о приоритетах это выдумка? Так что или чем тогда определяется порядок выполнения операторов, а также что такое в случае операторов с одинаковым приоритетом (примечание: термин имеет статус нелегального)?
Ответить с цитированием
  #22 (permalink)  
Старый 15.05.2020, 11:26
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от voraa
Операции && и || не булевы, а логические. Так они названы в спецификации. Булевые операции подразумевали бы, что их операнды должны иметь тип boolean и выдавать такой же результат.
Булевы операции, или логические операции в первую очередь и предназначены для работы с булевым типом данных, или логическим типом данных. Это одно и тоже — Boolean или logical data type. Логический тип данных ещё называют булевым типом в честь английского математика и логика Джорджа Буля.

Сообщение от voraa
Операция + ни грамма не ассоциативная.
Опять же, вы не учитываете типы! Когда и правый и левый операнды имеют одинаковый тип (String, Number или BigInt соответственно), то выполняется ассоциативность. В спецификации указано, что операция + в конечном счёте производит конкатенацию строк или сложение чисел.

alert(("a" + "b") + "c" === "a" + ("b" + "c")); // true, поскольку ассоциативность выполняется
alert((1 + 2) + 3 === 1 + (2 + 3)); // true, поскольку ассоциативность выполняется
alert((1 + 1) + "1" === 1 + (1 + "1")); // false, вы конечно можете и тут подобрать true, но тут разные типы, это плохая практика — отстреливать себе ноги и играть с мухой без головы, понапихают разного рандомного говна в операнды, а потом сидят и задают тупые вопросы, типа а почему там нет ассоциативности!


Сообщение от laimas
Так что или чем тогда определяется порядок выполнения операторов
В спецификации указаны правила разбора выражении рядом с алгоритмом выполнения (Runtime Semantics: Evaluation)

Последний раз редактировалось Malleys, 15.05.2020 в 11:34.
Ответить с цитированием
  #23 (permalink)  
Старый 15.05.2020, 11:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Malleys
В спецификации указаны правила разбора выражении рядом с алгоритмом выполнения
Вот тут вопрос - то что описано в спецификации верно по смыслу тому, что поясняется терминами "приоритет" и "ассоциативность" или же эти термины далеки от истины и нужно следовать "букве закона" отбросив их?
Ответить с цитированием
  #24 (permalink)  
Старый 15.05.2020, 13:16
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Сообщение от Malleys
В спецификации указаны правила разбора выражении рядом с алгоритмом выполнения (Runtime Semantics: Evaluation)
Сообщение от Malleys
Опять же, вы не учитываете типы! Когда и правый и левый операнды имеют одинаковый тип (String, Number или BigInt соответственно), то выполняется ассоциативность.
Вот с этим четким алгоритмом и надо действовать.
В нем ничего не говорится, что если типы одинаковы, то есть ассоциативность, а если разные то ассоциативности нет...
Просто есть алгоритм, как выполняется операция с учетом возможных типов
Ответить с цитированием
  #25 (permalink)  
Старый 15.05.2020, 14:10
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Сообщение от laimas
Вот тут вопрос - то что описано в спецификации верно по смыслу тому, что поясняется терминами "приоритет" и "ассоциативность" или же эти термины далеки от истины и нужно следовать "букве закона" отбросив их?
Приоритет определяется грамматикой языка.
Но про ассоциативность в программировании просто говорить бессмысленно. Так же, как и про коммутативность.
a+(b+c) == (a+b)+c ?
a+b == b+a ?
Когда как.
Мы же не знаем, что такое а, b, c.
А может быть это вызовы функций с побочным эффектом?
Просто есть правила выполнения операций.
a * b
Вычисли а, приведи к числовому типу
Вычисли b, приведи к числовому типу
(именно в такой последовательности, а не наоборот)
Результаты арифметически перемножь
Ответить с цитированием
  #26 (permalink)  
Старый 15.05.2020, 14:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от voraa
Приоритет определяется грамматикой языка.
И что это означает, определен ли в JS приоритет операторов? Учебники, справочные материалы языка оперируют именно приоритетом и ассоциацией операторов, и не просто рассказывают, а определены таблицей приоритетов. Тогда тут либо игра слов, либо упираемся рогом и не пяди не отдадим, либо то что заложено в сами понятия приоритет и ассоциация в JS не приемлемо и гарантированно будет порождать ошибки. Так что такое тогда приоритет и ассоциация в контексте операторов?
Ответить с цитированием
  #27 (permalink)  
Старый 15.05.2020, 15:16
Аспирант
Отправить личное сообщение для andypop Посмотреть профиль Найти все сообщения от andypop
 
Регистрация: 15.02.2014
Сообщений: 32

Malleys всё чётко объяснил, зачем это мозгоблудие? И приоритет есть для операндов и ассоциативность. Все дело именно в применение toBoolean. для js оно такое. Возможно что-то похожее есть и в др. языках. Давайте закруглять тему.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно прочитать запрос? gsdev99 Node.JS 3 30.06.2019 04:15
Прошу раскритиковать наслойку работы с MySql. Alasdair Node.JS 4 21.11.2015 20:06
Глюк firebug'а trikadin Оффтопик 23 16.01.2012 14:04
относительная высота zmaxon ExtJS 13 04.10.2010 12:42
Правильный ответ или неправильный Kevrat Ваши сайты и скрипты 7 13.01.2010 21:31