03.09.2022, 18:11
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Это всё херня, я вот жду когда рефы введут.
Что-то типа:
let foo = 1;
function set2(bar*) {
bar = 2;
}
set2(foo);
console.log(foo) // 2
Вот тогда то всё и сломают полностью.)
__________________
29375, 35
|
|
03.09.2022, 19:24
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Сообщение от Aetae
|
Это всё херня, я вот жду когда рефы введут.
Вот тогда то всё и сломают полностью.)
|
В Си это как-то с самого начала было и ничего не поломало.
Хотя, да. Иногда (лично мне) приходилось буквально на ощупь несколько раз переписывать выражение, чтобы всё заработало как надо.
А «x.0 … x.25» - нигде не встречается и её можно безопасно вводить в спецификацию…
|
|
03.09.2022, 19:57
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Alikberov
|
Зa 27 лет JavaScript изменился достаточно хорошо.
И приобрёл множество экзотических синтаксических особенностей.
|
Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.
Если в x.0 "0" это свойство, то такими же свойcтвами должны быть и любые другие числа (x.1, x.42 .... ) А как на счет x.3.14159?
|
|
03.09.2022, 20:05
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Aetae
|
Это всё херня, я вот жду когда рефы введут.
|
А что, есть такие предложения?
Я вот только слышал про неизменяемые массивы (кртеж, tuple) и неизменяемы простые объекты (record)
Сообщение от Alikberov
|
В Си это как-то с самого начала было и ничего не поломало.
|
В С работа с памятью (выделение, освобождение) целиком лежит на пользователе.
А в js рефы и так есть
let x = {a: 0, b: 1}
В х содержится не объект, а ссылка на объект.
|
|
03.09.2022, 20:18
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Сообщение от voraa
|
Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.
|
Ну, так в ES2020 добавили «Nullish Coalescing» и «Optional Chaining», что вообще как-то базовые принципы поломало…
|
|
03.09.2022, 20:44
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Это не поломало существующий синтаксис и не привело к синтаксическим неоднозначностям. Просто введены новые операции, задаваемы новыми синтаксическими конструкциями ("??", "?."). Никакие старые синтаксисы и правила при этом не затронуты. Это так же безболезненно, как была введена операция "**"
Никто не будет вводить новую операцию для обращения к свойству, заданному чиcлом, т.к. такая операция уже есть - x[0].
|
|
05.09.2022, 06:24
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,578
|
|
Сообщение от Alikberov
|
Для себя я выработал правило писать «for(i = 0; i < n; ++ i) {» вместо «for(i = 0; i < n; i++){», так как «++){» - эзотерика какая-то…
|
Это у вас очень чудное правило.
Которое больше как фонит тем что вы не разобрались в разнице , мол эзотерика. Нет эзотерики, код для шага цикла ничего не возвращает, поэтому для него нет разницы, и писать ++i несколько паливно
|
|
05.09.2022, 07:49
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,578
|
|
Сообщение от voraa
|
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
|
Ну этот трюк также в учебнике на этом сайте не упомянут, видимо ввиду своей неоднозначности.
Я бы его отнес к такому запаху кода как "obscured intent".
В коде у нас побитовая операция, но производим мы не ее, а использует ее сайдэффект по отбрасыванию дробной части и знание что "или" с "нулем" ничего не изменит.
Сообщение от Фаулер
|
Написать код понятный компьютеру может каждый, но только хорошие программисты пишут код понятный людям.
|
|
|
05.09.2022, 08:30
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от micscr
|
В коде у нас побитовая операция,
|
Это не просто побитовая операция. Это именно предварительное отбрасывания дробной части и приведение числа к 32 битовому целому. Это не сайдэффек, а просто часть операции.
Надо знать все особенности выполнения операции.
Так же как надо знать все особенности ++x и x++ - то, что это не просто прибавление 1 к x
Так же, как знать особенности выполнения операций && и || (то, что логические значения только вычисляются, но не возвращаются)
Человек, читающий код должен знать это. Тогда ему будет понятно.
Последний раз редактировалось voraa, 05.09.2022 в 08:55.
|
|
05.09.2022, 09:51
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,578
|
|
Сообщение от voraa
|
Надо знать все особенности выполнения операции.
|
Все подробности выполнения побитовой операции полезно знать когда у тебя задача работать с битами, а у нас задача - привести число к целому.
В js почему то так вышло, что везде очень много тонкостей, пример - дока к оператору "==", которые видимо предлагается учить наизусть, когда это твой один язык в стеке, то куда не шло, а иначе ...
|
|
|
|