As For JS
3.46K subscribers
123 photos
12 videos
4 files
358 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
Если хочется о чем то подумать.

Попробуйте создать такой обьект Say, поведение которого бы отвечало тому, что на скриншоте:

любая цепочка обращения к проперти приводит к возвращению строки из имен этих проперти.
🔥17❤‍🔥1👀1
Усик.
5 раунд.
чемп.

Слава Україні.
🔥7511👎4🤣4😁3❤‍🔥1🤯1🙏1😍1
😁33👍64🐳2🤯1
Что будет отображено в консоли при выполнении следующего кода:

var theSym = Symbol("abc");
console.log( theSym );
console.log( `${theSym}` );


тем кому слишком просто, задачка со звездочкой - почему происходит именно так
Пояснения относительно задачи про Symbol.

Короткий ответ:
console.log - это внешнее API, которое не обязано подчинятся спецификации ECMA.
Описание того, как и что именно, может делать метод log обьекта console содрежится в спецификации HTML5.

Где прямо написано - решение о том, как поведет себя метод log - лежит на плечах программиста который реализует этот метод. Реализует так - как ему хочется.


Длинный ответ:
Чтобы легко ориентироваться в том, как работает JS - нужно помнить три простых принципа:

1) JS это язык, в котором нет своего ввода/вывода. Любое получение данных или отображение данных, зависит не от языка JS. и может быть каким угодно, в зависимости от того, как работает внешнее API

2) механизм прототипного наследования, которым пронизана вся спецификация (для нашего случая сейчас не принципиален)

3) каждый statement разбирается на выражения, которые выполняются согласно алгоритму заявленному спецификацией.
то есть когда Вы смотрите на строку кода, то в ней НЕТ НИЧЕГО чтобы не прошло через какой то алгоритм.

даже когда вы пишите просто число 1 - то это не данные, это statement который приводит к тому, что возвращается ссылка на что-то что описывает данные.


var theSym = Symbol("abc");
console.log( theSym );

в строке с console.log у нас несколько частей, которые пройдут работу согласно алгоритмам спецификации:
1) console.log - получение ссылки на метод
2) ( ) - callable expression, то есть вызов чего то с чем то
3) идентификатор theSym - получение ссылки на структуру данных связанной с идентификатором theSym

Если кратко - вызов внешнего API log, внешнего обьекта console, передав ему ссылку на то, что связано с идентификатором theSym.

Результат? - в душе не тилельнкаю, потому, что это внешнее API которое может делать чем ему вздумается.


Вторая часть
console.log( `${theSym}` );

отличается от первой тем, что идентификатор theSym проходит через еще один этап вычисления выражения (алгоритма спецификации ECMA). Который требует вызов метода toString применимого к идентификатору, из-за использования темплейт литерал.

Согласно которому, в случае типа Symbol, должно быть throw.


Вместо ИГОГО:
Сталкиваясь с любым поведением, которое вас ставит в тупик, первое что сделайте - разделите где сам язык JS, который регламентируется ECMA Spec, а где вызов внешнего API.

Поведение которого, не обязательно регламентируется той самой ECMA Spec. И может быть как подчинено сторонней спецификации так и быть галлюцинацией программиста, который реализовывал API.

То есть разница в выводе заявленной задачи, оьясняется тем, что метод log обьекта console, а точнее те кто его реализовывал в Google Chrome, сделали так как им удобно. Вопреки тому, что диктует спецификация
15🔥5👍2😍2
Смотрите по сторонам.
Не пропускайте жизнь которая идет вокруг Вас.
Те кто умеет єто делать и становятся счастливыми людьми.

https://www.youtube.com/watch?v=5wrwcEZ3Btw
10❤‍🔥3👍1😍1👀1
время прохладных историй:
Как Мурыч не стал Google Expert-ом

Для того, чтобы стать Google Expert-ом в той или иной области, то есть получить на их сайте подтверждение, что такой есть, иметь возможность быть приглашенным на общую пати и вам даже оплатят дорогу и проживание, нужно...

В течении года, на одном из профильных форумов (Вы не знали что такие есть?), активно давать "правильные" ответы.

Список того, что является "правильным" ответом, в зависимости от направления, Вы либо находите в специальном разделе документации самого Google либо Вам его предоставляют прямо в правилах самого форума.

За этот отчетный год, Вас должны заметить двое участников форума, которые уже имеют "регалии" и порекомендовать Вас на голосование, где такие же "експерты" выносят свое решение о том, быть Вам или не быть.

То есть, все что Вам нужно, это не быть программистом или специалистом в области. Вам нужно проявлять активность и оперативно давать заранее существующие уже ответы на вопросы, которые задают пользователи.

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

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

Среди таких номинантов, получивших имя, есть люди которые не написали НИ ОДНОЙ СТРОЧКИ КОДА.

Мурыч, как узнал что обязан отвечать так как положено, но не так как хочется - послал всю эту богодельню курсом русского корабля.

Вот такой он молодец. ( Для тех кто не понимает языка иронии от Мурыча - это было именно он).


Важное ПыСы:
Можно получить и иначе. Например писать какие-то одобряемые статьи. Только это все равно ничего не меняет с учетом всего того, что выше.

Такие вот они Google иксперты.
Люди со звездами на GitHub обладают большей доказанной экспертизой.
🤯115👍5🤣2🔥1