As For JS
3.46K subscribers
124 photos
12 videos
4 files
360 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
Про var/let/const в module ECMAScript и особенности поведения связанные с Global Enviroment.

Декларация имен идентификаторов, с использованием variable statement имеет одну неприятную особенность, связанную с выполнением в Global Enviroment. А именно это приводит к дополнительным издержкам для обеспечения двунаправленной связи между идентификатором и Global Object, когда изменение данного связанного с Property в Global Object, должно быть так же отражено в аналогичной связи идентификатора ( декларируемого при помощи variable statement)

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

//Global Enviroment

function() {};
var doThing = ()=>{};
new Function('a', 'a+1');

Подобных особенностей поведения в Global Environment лишены let/const declaration.


Поведение же для Module Environment, что для variable statement, что для let/const declaration ничем не отличается.


Вместо ИГОГО:
Использование var или function или Function для Global Enviroment - стоит дополнительных издержек. И этого нужно избегать.
Использование let/const для Global Environment, напротив их лишены.

Использование var function Function let const в Module Environment ничем не отличаются.

Важная ремарка:
Речь идет о использовании идентификатора в том окружении где он был декларирован.
Ранее заявленные проблемы с производительностью let/const в условиях их использования за пределами места их декларации, никуда не делись и остаются теми же и для module environment.
17👍6
1.png
10.1 KB
Чат ЖПТ упырь, или ИИ тоже умеет шутить
😁12👀31
Тем кто хочет поболтать в эфире про приведение типов
https://meet.google.com/ana-acdh-suy
3
JavaScript в вашей жизни, должен появляться только кстати. В противном случае - єто не JavaScript, єто ваше проклятие

https://www.youtube.com/watch?v=dJT_ZmILjZs
8😁3👍2💔2👌1
Всю ночь я давил на массу в надежде что мою светлую и цросторную голову что-то наполнит.

Я ошибался. Потому опрос, верно ли что ты:
Anonymous Poll
47%
Упырь
71%
Заслуженный упырь
🤣11
Тем кто пропустил задачу из последнего стрима:
(()=>{
const theObjA = { valueOf: ()=>3};
const theObjB = { valueOf: ()=>4};
theObjA+theObjB; // Результат?

{ valueOf: ()=>3} + { valueOf: ()=>4}; //Результат?

})();
👎10👍5😁3👀1
Какие результаты у предыдущего кода
Anonymous Quiz
35%
Typed Error
27%
7 и 7
13%
7 и 4
25%
7 и Typed Error
🌚11👎9👍3
YouTube сообщил, что канал asforjs наконец получил 1млн просмотров.

Єта статистика тем более смешная, что только одно из интервью данных на стороннем канале собрало 600 000.

Будем считать, что єто пересчет єталонных упырей. Тогда все сходится.
73🤣17👌11🔥6❤‍🔥2😁2👨‍💻2🤯1💯1👀1
Всех набрали.

У кого есть желание, сегодня в 21-00
поучаствовать в качестве подопытного
в идеальном собеседовании,
на должность - насколько я разбираюсь в JavaScript

напишите мне в личку.
@demimurych
мы вас пустим на органы онлайн
в удовольствие публике

предпочтения отдаются тем, кто только знакомится с языком.
в том вся суть


кто тут в цари крайний?
https://www.youtube.com/watch?v=_O5btaXgiEk
👀13❤‍🔥5🔥3🐳2👨‍💻1
As For JS
Тем кто пропустил задачу из последнего стрима: (()=>{ const theObjA = { valueOf: ()=>3}; const theObjB = { valueOf: ()=>4}; theObjA+theObjB; // Результат? { valueOf: ()=>3} + { valueOf: ()=>4}; //Результат? })();
Пояснение за задачу
(()=>{
const theObjA = { valueOf: 3}; // конечно тут должна быть функция
const theObjB = { valueOf: 4}; // конечно тут тоже должна быть функция
theObjA+theObjB; // Результат?

{ valueOf: 3} + { valueOf: 4}; //Результат?

})();


Пояснение для этой задачи состоит из двух факторов:
1) люди которые оказались на одной со мной волне, восприняли задачу как "псевдокод" о том что...
и так как вполне ориентировалась о чем именно этот "псевдо-код" никто даже не написал в личку что этот код не работает сам по себе.

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

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


Верной с точки зрения синтаксиса JS, условие этой задачи было бы таким:
(()=>{
const theObjA = { valueOf: ()=>3};
const theObjB = { valueOf: ()=>4};
theObjA+theObjB; // Результат?

{ valueOf: ()=>3} + { valueOf: ()=>4}; //Результат?

})();



А если быть еще точнее, то максимально интересной эту задачу делает код подобный такому:
(()=>{
var theCounter = 0;
const theObjA = { valueOf: ()=>(theCounter++,3)};
const theObjB = { valueOf: ()=>(theCounter++,4)};
theObjA+theObjB; // Результат?

{ valueOf: ()=>(theCounter++,3)} + { valueOf: ()=>(theCounter++,4)}; //Результат?

})();


Вчера была трансляция, где разбору этой ситуации было посвящено не меньше часа.
🔥52
Каков результат у theCounter из предыдущего кода?
Anonymous Quiz
5%
0
3%
1
9%
2
18%
3
22%
4
41%
я упырь