Size: a a a

JavaScript — русскоговорящее сообщество

2020 October 14

в

вαғғσмεттι in JavaScript — русскоговорящее сообщество
Не на впс, на обычном хостинге.
И куда я раньше смотрел🌚
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
кто может объяснить почему в таком коде
(function (Sizes) {
   Sizes[Sizes["Small"] = 0] = "Small";
   Sizes[Sizes["Medium"] = 1] = "Medium";
   Sizes[Sizes["Large"] = 2] = "Large";
})(Sizes || (Sizes = {}));
я получаю объект
{
 '0': 'Small',
 '1': 'Medium',
 '2': 'Large',
 Small: 0,
 Medium: 1,
 Large: 2
}
в какой момент интерпретатор производит инициализацию дважды?
источник

in JavaScript — русскоговорящее сообщество
Евгений Баранов
кто может объяснить почему в таком коде
(function (Sizes) {
   Sizes[Sizes["Small"] = 0] = "Small";
   Sizes[Sizes["Medium"] = 1] = "Medium";
   Sizes[Sizes["Large"] = 2] = "Large";
})(Sizes || (Sizes = {}));
я получаю объект
{
 '0': 'Small',
 '1': 'Medium',
 '2': 'Large',
 Small: 0,
 Medium: 1,
 Large: 2
}
в какой момент интерпретатор производит инициализацию дважды?
У тебя в этой строке сколько присвоений?
источник

a

allpeg in JavaScript — русскоговорящее сообщество
Евгений Баранов
кто может объяснить почему в таком коде
(function (Sizes) {
   Sizes[Sizes["Small"] = 0] = "Small";
   Sizes[Sizes["Medium"] = 1] = "Medium";
   Sizes[Sizes["Large"] = 2] = "Large";
})(Sizes || (Sizes = {}));
я получаю объект
{
 '0': 'Small',
 '1': 'Medium',
 '2': 'Large',
 Small: 0,
 Medium: 1,
 Large: 2
}
в какой момент интерпретатор производит инициализацию дважды?
Sizes[Sizes["Small"] = 0] = "Small";
1) Sizes["Small"] = 0 выполняется, ставит ключ Small и возвращает 0
2) Sizes[0] = "Small";`выполняется и ставит ключ `0
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
почему это невозможно отловить при пошаговой проверке и просмотра Local Scope?
источник

a

allpeg in JavaScript — русскоговорящее сообщество
Евгений Баранов
почему это невозможно отловить при пошаговой проверке и просмотра Local Scope?
потому что отладчик работает по строкам, а не по выражениям?
источник

D

Danila in JavaScript — русскоговорящее сообщество
allpeg
потому что отладчик работает по строкам, а не по выражениям?
Он работает по шагам, строки его не оч интересуют
источник

a

allpeg in JavaScript — русскоговорящее сообщество
Danila
Он работает по шагам, строки его не оч интересуют
что значит "шаг" ?
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
тоже думаю что он привязан к лексемам которые распарсил
источник

a

allpeg in JavaScript — русскоговорящее сообщество
ну вот смотрите Sizes["Small"] = 0 и "Small" и 0 - всё выражения, на каких он должен останавливаться по два раза в одной строке, а на каких нет?
источник

a

allpeg in JavaScript — русскоговорящее сообщество
хотя вру конечно, он ходит по выражениям, т.е.
Sizes[
       Sizes["Small"] = 0
   ] = "Small";
он пройдет за один шаг
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
вот у меня и появился вопрос почему он съел это в один шаг
источник

SL

S. L. in JavaScript — русскоговорящее сообщество
всем привет, как можно сослаться на поля объекта, в котором я нахожусь?
источник

a

allpeg in JavaScript — русскоговорящее сообщество
S. L.
всем привет, как можно сослаться на поля объекта, в котором я нахожусь?
привет. никак.
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
ведь у нас идет вначале объявление а потом инициализация
источник

SL

S. L. in JavaScript — русскоговорящее сообщество
окей
источник

SL

S. L. in JavaScript — русскоговорящее сообщество
я понял
источник

SL

S. L. in JavaScript — русскоговорящее сообщество
а можете объяснить как это работает?
источник

a

allpeg in JavaScript — русскоговорящее сообщество
Евгений Баранов
вот у меня и появился вопрос почему он съел это в один шаг
потому что в одном выражении "верхнего уровня" могут быть несколько подвыражений, и отладчик их все выполняет за раз. С точки зрения возвращаемого значения нет разницы между выражеием
Sizes["Small"] = 0 и 0, оба возвращают значение 0, а то что первое это ещё и присваивание - то ну и что.

Отладчик всё-таки не предотвращает выстрелы в ногу, а просто позволяет по шагам-выражением-верхнего-уровня ходить туда-сюда

кстати если есть несколько вызовов функций типа f(g()) то при нажатии кнопки "войти в" он спросит, в какую войти.
источник

ЕБ

Евгений Баранов... in JavaScript — русскоговорящее сообщество
allpeg
потому что в одном выражении "верхнего уровня" могут быть несколько подвыражений, и отладчик их все выполняет за раз. С точки зрения возвращаемого значения нет разницы между выражеием
Sizes["Small"] = 0 и 0, оба возвращают значение 0, а то что первое это ещё и присваивание - то ну и что.

Отладчик всё-таки не предотвращает выстрелы в ногу, а просто позволяет по шагам-выражением-верхнего-уровня ходить туда-сюда

кстати если есть несколько вызовов функций типа f(g()) то при нажатии кнопки "войти в" он спросит, в какую войти.
ок
спасибо
на самом деле это транспиляция TS в JS
так иди иначе было интересно с чем мы работаем под капотом
источник