Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 03.09.2022, 18:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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

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

set2(foo);

console.log(foo) // 2


Вот тогда то всё и сломают полностью.)
__________________
29375, 35
Ответить с цитированием
  #22 (permalink)  
Старый 03.09.2022, 19:24
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

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

А «x.0 … x.25» - нигде не встречается и её можно безопасно вводить в спецификацию…
Ответить с цитированием
  #23 (permalink)  
Старый 03.09.2022, 19:57
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Alikberov
Зa 27 лет JavaScript изменился достаточно хорошо.
И приобрёл множество экзотических синтаксических особенностей.
Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.
Если в x.0 "0" это свойство, то такими же свойcтвами должны быть и любые другие числа (x.1, x.42 .... ) А как на счет x.3.14159?
Ответить с цитированием
  #24 (permalink)  
Старый 03.09.2022, 20:05
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Aetae
Это всё херня, я вот жду когда рефы введут.
А что, есть такие предложения?
Я вот только слышал про неизменяемые массивы (кртеж, tuple) и неизменяемы простые объекты (record)
Сообщение от Alikberov
В Си это как-то с самого начала было и ничего не поломало.
В С работа с памятью (выделение, освобождение) целиком лежит на пользователе.
А в js рефы и так есть
let x = {a: 0, b: 1}
В х содержится не объект, а ссылка на объект.
Ответить с цитированием
  #25 (permalink)  
Старый 03.09.2022, 20:18
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Сообщение от voraa Посмотреть сообщение
Ну есть же базовые принципы синтаксиса.
Свойство после "." должно быть задано идентификатором, а не числом или еще чем либо.
Ну, так в ES2020 добавили «Nullish Coalescing» и «Optional Chaining», что вообще как-то базовые принципы поломало…
Ответить с цитированием
  #26 (permalink)  
Старый 03.09.2022, 20:44
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Это не поломало существующий синтаксис и не привело к синтаксическим неоднозначностям. Просто введены новые операции, задаваемы новыми синтаксическими конструкциями ("??", "?."). Никакие старые синтаксисы и правила при этом не затронуты. Это так же безболезненно, как была введена операция "**"
Никто не будет вводить новую операцию для обращения к свойству, заданному чиcлом, т.к. такая операция уже есть - x[0].
Ответить с цитированием
  #27 (permalink)  
Старый 05.09.2022, 06:24
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Сообщение от Alikberov Посмотреть сообщение
Для себя я выработал правило писать «for(i = 0; i < n; ++ i) {» вместо «for(i = 0; i < n; i++){», так как «++){» - эзотерика какая-то…
Это у вас очень чудное правило.
Которое больше как фонит тем что вы не разобрались в разнице , мол эзотерика. Нет эзотерики, код для шага цикла ничего не возвращает, поэтому для него нет разницы, и писать ++i несколько паливно
Ответить с цитированием
  #28 (permalink)  
Старый 05.09.2022, 07:49
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Сообщение от voraa Посмотреть сообщение
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
Ну этот трюк также в учебнике на этом сайте не упомянут, видимо ввиду своей неоднозначности.
Я бы его отнес к такому запаху кода как "obscured intent".
В коде у нас побитовая операция, но производим мы не ее, а использует ее сайдэффект по отбрасыванию дробной части и знание что "или" с "нулем" ничего не изменит.

Сообщение от Фаулер
Написать код понятный компьютеру может каждый, но только хорошие программисты пишут код понятный людям.
Ответить с цитированием
  #29 (permalink)  
Старый 05.09.2022, 08:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

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

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

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

Последний раз редактировалось voraa, 05.09.2022 в 08:55.
Ответить с цитированием
  #30 (permalink)  
Старый 05.09.2022, 09:51
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить данный кусок кода, чтобы он корректно работал в extjs5? Risa ExtJS 3 05.02.2015 22:24
Чем можно сделать отображение видео на сайте как в примере? Duda.Ml1986@gmail.com Библиотеки/Тулкиты/Фреймворки 0 24.10.2014 11:13
Чем заменить live() ? FRIE jQuery 2 06.10.2014 18:03
Чем заменить вызов GetObject (JS) в Internet Explorer 9 и новее? 13hakta Internet Explorer 0 17.04.2014 15:21
Помогите найти в чем ошибка Pashok Элементы интерфейса 6 26.02.2013 20:20