As For JS
3.45K subscribers
123 photos
12 videos
4 files
358 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
Обьявление

Сегодня, во вторник 7 числа, в 18-00 по Киеву, я хочу провести первую лекцию на материале своей книги: Фундаментальная проблема понимания языка.

Мне нужна группа людей, которые были бы онлайн и принимали участие в лекции своими вопросами.



Требование к кандидату:

1) Кандидат умеет писать хоть какой либо код на языке JS, результат которого можно было бы увидеть, как минимум в браузере.

2) Кандидат предполагает что для него очевидно что такое Object в JavaScript.
Важно не то, верно ли Кандидат понимаете что такое Object.
Важно то, что Кандидат думает, что понимает о чем идет речь.
Например вы думаете что понимаете что произойдет в следующем случае:
var obj = {
prop: "name"
};
console.log(obj.prop);


2.1) Люди которые предполагают что они ошибаются, имеют больший приоритет

3) Кандидат - должен задать хотя бы один вопрос.


Кто готов - напишите мне в личку, я Вам отправлю ссылку на Google Meet.
🔥38👍7😁63🤯2🌚1
у меня поднялась температура,
я пока лежу встать не могу.

сегодня ничего не будет - деда подыхает
🙏5613🕊11💔5🤣4
Только что мне прислали задачку по JavaScript, которую я не смог решить.
Может повезет Вам:

Откуда у Айболита были новые ножки для зайчика?

Живите теперь с этим.
😁29👀10👨‍💻4👍1👌1
Температура 39.1,
врач занят,
я попросил оливье,
меня кормят
❤‍🔥95🙏28👍6🔥54🤯2😍2🤣2💔2😎1
Мне для уточнения лекции о JavaScript, нужно проверить одну гипотезу.

Пожалуйста, пользуясь интернетом или любыми другими источниками, поясните как работает этот код написанный на языке ассемблера для 8086 архитектуры:

  mov ax, 001h;
cmp ax, 0000h;
jne ne;
mov ax, 0002h;
ne:


Не огорчайтесь, если не сможете решить этот вопрос.
Из всех присутствующих, тут, по крайней мере, тех кого я знаю, только Тимур Шемсендинов ответит верно.

Важен не правильный или неправильный ответ.
Важна последовательность рассуждений.
Или блок схема


Постом ниже я опишу о чем все это
🤯10🌚31
Переслано из другого чата:

Это тебе в asforjs.
Только прояви терпение там одни отморозки.
😁53👍3💯3🕊1
Ура.
Проведены переговоры про собеседование.

Все будет.
47👍26🔥19🕊2🙏1
Forwarded from Demi Murych
согласно спецификации - работа с литертлом - єто просто абстрактное - возвращает значение литерала.

как и где он хранится - спецификация не регламентирует.

например:
"yo";

означает выполнить експрешион "yo" которое должно вернуть ссылку на данные описывающих строку"yo"

или
127;

єто не число 127, єто литерал - особая форма выражения, котоую агент выполняет подобно любому другому и следует алгоритму, который в єтох случае вернет ссылку на данные описывающие число 127.





тем не менее ты прав, что спецификация применяет много разной работы к литералу, равную обьекту, потому как минимум внутри v8 стандартно - все обьект.

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



второй важный пункт - єто то, как согласно спецификации работает let.

1) єто не лет из js. єто свой собственный let спецификации (превед гениям документации)

2) любое связывание в спецификации єто всегда let или set

3) согласно спецификации, любое связывание работает reference like. То есть любое изменение идентификатора связанного с данным приводит к изменению всех связей всех идентификаторов связанных с ним, с єтим данным.

и, что важнее всего - єто справедливо и НАОБОРОТ.


именно потому, деюрє ВСЕ типы данных в js ссылочные.

исключение появилось тогда, когда появились typed array. Где больше 10 реальных типов данных в машинном представлении с минимумом абстракций и там нет ссылок а есть прямые изменения данны в памяти
👨‍💻19👍10🙏32🤣2👌1👀1
я пропустил твой декабрь.
плачу так же как и тогда.

https://www.youtube.com/watch?v=ehaEdXJGEdg
👍11🔥53
У Вас есть код:
(
()=>{
const PI = 3.14;
function A(param) {
console.log("A", param*PI )
}

function B(PI) {
return function(param) {
console.log("B", param * PI )
}
}

function C(param){
console.log("C", param * 3.14 )
}


A(1);
B(3.14)(1);
C(1);
}
)();
👍3🔥31🤣1
Какие из заявленных функция являются чистыми?
Anonymous Quiz
6%
Функция A
11%
Функция B
22%
Функция C
17%
Функция B и C
44%
Ни одна из них
🔥12🤣2
Сегодня, ожидая очередь в процедурную, разговорился с одним человеком. Он меня старше, но проблемы в сущности те-же: все деньги уходят на пилюльки, мозги не работают, подыхаешь от боли и прочие радости людей не в стадии ремиссии.

Мы сговорились с ним прогуляться домой вместе. И вот идем мы с ним, болтаем за нашу нелегкую женскую долю, как вдруг он останавливается, достает из кармана катлету денег по 50 гривен (банковская упаковка), отщипывает от нее дву купюры и бежит через дорогу.

Я слежу за ним. На другой стороне - типичный интеллигентный бомж. Ну из тех которые живут бог знает где, из одежды только то что на нем, и тележка, куда он собирает бутылки пластик и бумагу.

Через пол минуты, мой спутник возвращается. Я у него спрашиваю - у тебя же в кармане не меньше 50 000. 5 000. Ты бы мог легко купить себе вот то-то (особые пилюльки).

А он мне говорит - а ты сам попробуй так сделать. Увидишь в первый раз как они плачут когда ты им просто даешь деньги, никаких пилюлек не надо.

Такая вот жизнь.
38🤣6👍4❤‍🔥2🤯1💔1
Я очень долго писал комментарий к одному ответу на YouTube.
Но оказалось что я на том канале забанен.
Размещу его здесь.

Ответ вот на это сообщение:
https://www.youtube.com/watch?v=-lHQ8b0GpEQ&lc=UgzqZ6hJTbNAmXoPxOp4AaABAg.9pRUv3pJmiBADWzUaBzFio

@iuriiankudinov9131
Про JavaScript ECMAScript
По сути, компания Oracle не препятствует повсеместному

Никого не волнует - препятствует или нет. Всех волнует только факт того, не придут ли завтра к тебе с иском и не потребуют ли рояльти. А чтобы этого не было - должен быть договор о использовании. Который Oracl не дает. Более того в 2024 году к ним был запрос относительно этого и получен отказ.

По этой причине с первого дня существования стандарта у нас есть ECMAScript как официальное название. О чем можно так же прочитать в первой главе Introduction спецификации ECMA.


var, let, const

Никаких областей видимости(block scope, function scope), согласно современной спецификации, в JavaScript нет. Их нет даже в первой спецификации 1997 года. Это жаргон который пришел в язык извне. И безответственно навязан многим людям, которые потом не могут понять почему у них "контекст теряется"

В современном языке JavaScript существует концепция окружений. И термин - область применения.
Которые в общем случае описываются типичной прототипной моделью Обьекта в JavaScript, где на каждое окружение создается обьект, ключами которого становятся идентификаторы обьявленные в этом окружении.

Каждое связанное окружение, создает новый обьект, прототипом к которому устанавливается обьект предыдущего окружения.

В первых версиях спецификации такие обьекты так и назывались - Variables Object.
В современных версиях спецификации - это называется Environments. Let и Const относятся к Lexical Environment ( не путать с лексическим окружением из сленга).


var реально нужна для глобальных объектов

Это ваши галлюцинации. Например:
Вам известно что function declaration - это тот же var? Вам известно что внутри окружения функции, используя function declaration вы используете тот же самый механизм что и используется variable statement? Где в окружении функции ( или если говорить вашим языком в function scope) глобально окружение?

let и const - это безобразно спроектированные развитие концепции var. Которая привела к просадкам производительности настолько значимым. Что первые две версии V8 с момента реализации let и const игнорировали часть спецификации чтобы сохранить ее на приемлемом уровне.

let и const - это всего лишь надстройка над var. С дополнительной проверкой в зависимости от окружения. Что видно как в спецификации, так и в конркетной реализации V8 на уровне байт кода, где доступ к идентификатору делается одним и тем же способом, но если требуется дополнительная проверка на окружение - до вставляется дополнительный код для этого.


Event Loop – базовая концепция выполнения JavaScript-код

EventLoop не имеет НИКАКОГО отношения к выполнению JS кода. И представляет из себя ОДИН ИЗ возможных механизмов постановки задачи на выполнения.

Для работы async awaite promise - event loop не требуется. Для их работы в спецификации заявлены свои очереди которые к EventLoop не имеют никакого отношения.


в реальности любая среда выполнения JavaScript (браузер или Node) использует цикл событий для организации асинхронного кода.Event Loop не ограничен только HTML5


Нет не любая. Любая среда обязана реализовать Job Queue, Promise Queue, Timeout queue. Которые могут быть сделаны ЛЮБЫМ образом. Event Loop - один из них. Например в D3 никакого Event Loop нет, при этом промисы прекрасно работают.

HTML-спецификация действительно описывает Event Loop для браузерной среды, но в Node тоже есть своя реализация Event Loop (libuv). Значит, это не только про HTML5, а про любую среду, где исполняется JS

И общего у этих реализаций только название. LibUv очень старается быть похожим на EventLoop из HTML5 но они радикально разные. Типичный пример - обработка окружением Node и HTML5 таймеров. Которая радикально разная.

И так далее.
👍45❤‍🔥13🔥10👎1👌1👀1
Он EventLoop критичен для понимания асинхронности JS. Принцип «однопоточности» и механика отложенных задач (callbacks, promises, async/await) напрямую зависят от Event Loop. Без этого понимания невозможно работать с асинхронным JavaScript.

Это полнейшие глупости. Откуда Вы их взяли? Я могу вам обьяснить асинхронность без единого упоминания EventLoop и показать как он работает на примерах ГДЕ НИКАКОГО EventLoop нет.
Для их работы нужна Job Queue и Promise Queue, которые никакого отношения к Event Loop не имеют. Они вообще работают иначе.
👍36❤‍🔥9🔥8😎21👌1
Что Вы думаете насчет такого кода?

sub_off(sub_pos) {
if (!(sub_pos < this.data.length)) {
fail(new Error(`Wrong pos ${sub_pos}`));
}
const end = this.data.length - 2;
if (sub_pos !== end) {
this.peer_move(end, sub_pos);
}
this.data.pop();
this.data.pop();
if (this.data.length === this.sub_from)
this.reap();
}


любые предложения приветствуются. (;
👎23🔥4👀3👍2🤣2👌1