Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чем заменить continue (https://javascript.ru/forum/misc/84413-chem-zamenit-continue.html)

Aetae 03.09.2022 18:11

Это всё херня, я вот жду когда рефы введут.
Что-то типа:
let foo = 1;

function set2(bar*) {
  bar = 2;
}

set2(foo);

console.log(foo) // 2


Вот тогда то всё и сломают полностью.)

Alikberov 03.09.2022 19:24

Цитата:

Сообщение от Aetae (Сообщение 547742)
Это всё херня, я вот жду когда рефы введут.
Вот тогда то всё и сломают полностью.)

В Си это как-то с самого начала было и ничего не поломало.
Хотя, да. Иногда (лично мне) приходилось буквально на ощупь несколько раз переписывать выражение, чтобы всё заработало как надо.:lol:

А «x.0 … x.25» - нигде не встречается и её можно безопасно вводить в спецификацию…

voraa 03.09.2022 19:57

Цитата:

Сообщение от Alikberov
Зa 27 лет JavaScript изменился достаточно хорошо.
И приобрёл множество экзотических синтаксических особенностей.

Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.
Если в x.0 "0" это свойство, то такими же свойcтвами должны быть и любые другие числа (x.1, x.42 .... ) А как на счет x.3.14159?

voraa 03.09.2022 20:05

Цитата:

Сообщение от Aetae
Это всё херня, я вот жду когда рефы введут.

А что, есть такие предложения?
Я вот только слышал про неизменяемые массивы (кртеж, tuple) и неизменяемы простые объекты (record)
Цитата:

Сообщение от Alikberov
В Си это как-то с самого начала было и ничего не поломало.

В С работа с памятью (выделение, освобождение) целиком лежит на пользователе.
А в js рефы и так есть
let x = {a: 0, b: 1}
В х содержится не объект, а ссылка на объект.

Alikberov 03.09.2022 20:18

Цитата:

Сообщение от voraa (Сообщение 547744)
Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.

Ну, так в ES2020 добавили «Nullish Coalescing» и «Optional Chaining», что вообще как-то базовые принципы поломало…:lol:

voraa 03.09.2022 20:44

Это не поломало существующий синтаксис и не привело к синтаксическим неоднозначностям. Просто введены новые операции, задаваемы новыми синтаксическими конструкциями ("??", "?."). Никакие старые синтаксисы и правила при этом не затронуты. Это так же безболезненно, как была введена операция "**"
Никто не будет вводить новую операцию для обращения к свойству, заданному чиcлом, т.к. такая операция уже есть - x[0].

micscr 05.09.2022 06:24

Цитата:

Сообщение от Alikberov (Сообщение 547737)
Для себя я выработал правило писать «for(i = 0; i < n; ++ i) {» вместо «for(i = 0; i < n; i++){», так как «++){» - эзотерика какая-то…

Это у вас очень чудное правило.
Которое больше как фонит тем что вы не разобрались в разнице , мол эзотерика. Нет эзотерики, код для шага цикла ничего не возвращает, поэтому для него нет разницы, и писать ++i несколько паливно

micscr 05.09.2022 07:49

Цитата:

Сообщение от voraa (Сообщение 547735)
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.

Ну этот трюк также в учебнике на этом сайте не упомянут, видимо ввиду своей неоднозначности.
Я бы его отнес к такому запаху кода как "obscured intent".
В коде у нас побитовая операция, но производим мы не ее, а использует ее сайдэффект по отбрасыванию дробной части и знание что "или" с "нулем" ничего не изменит.

Цитата:

Сообщение от Фаулер
Написать код понятный компьютеру может каждый, но только хорошие программисты пишут код понятный людям.


voraa 05.09.2022 08:30

Цитата:

Сообщение от micscr
В коде у нас побитовая операция,

Это не просто побитовая операция. Это именно предварительное отбрасывания дробной части и приведение числа к 32 битовому целому. Это не сайдэффек, а просто часть операции.
Надо знать все особенности выполнения операции.

Так же как надо знать все особенности ++x и x++ - то, что это не просто прибавление 1 к x
Так же, как знать особенности выполнения операций && и || (то, что логические значения только вычисляются, но не возвращаются)

Человек, читающий код должен знать это. Тогда ему будет понятно.

micscr 05.09.2022 09:51

Цитата:

Сообщение от voraa (Сообщение 547775)
Надо знать все особенности выполнения операции.

Все подробности выполнения побитовой операции полезно знать когда у тебя задача работать с битами, а у нас задача - привести число к целому.
В js почему то так вышло, что везде очень много тонкостей, пример - дока к оператору "==", которые видимо предлагается учить наизусть, когда это твой один язык в стеке, то куда не шло, а иначе ...


Часовой пояс GMT +3, время: 07:07.