As For JS
3.4K subscribers
119 photos
12 videos
4 files
335 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
У дураков мысли сходятся.

Сегодня узнал, что идеи моего мега-продукта doPerDo, реализуют в Scala 3. И что во многом это уже есть в OCaml.

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

В 2035 году, все будут писать пользовательский код подобно doPerDo. Скриньте.
От автора книги Чистый Кот
Только для подписчиков, от автора серии книг Чистый Кот и Совершенный Кот
Diggy Diggy Deploy
@demimurych
Человек с ником Alex, папищик и настоящий упырь, крутил на пропеллере ИИ, в результате чего последний сделал две песни про

I am a dev and I’m pushing to prod ...
Сегодня в четверг, 22-00 по Киеву
String in wild. Часть 3 из 3.

Это заключительная лекция о String в JavaScript, в которой мы поговорим о:
1) нормализации строк
2) доступных нам методов контроля за наличием в них ошибок
3) посчитаем графемы, слова, предложения
4) проникнемся регулярными выражениями
5) заглянем под капот V8, с целью узнать а как у него там дела

https://www.youtube.com/watch?v=cYxohlw4mV0
Что такое Hoisting в рамках современной спецификации ECMAScript

Или что отвечать на собеседованиях.

Hoisting - это безграмотный жаргон закрепившийся в окружении JavaScript программистов, являющийся собирательным образом, для целой группы выражений таких как:
variable statement: var theVarThing = 1;
let/const declaration; let theLetThing = 2;
hoistable declaration ; function doThing() {};

и описывающий процесс, когда при формировании окружения, для выполнения кода функции, имена идентификаторов (theVarThing, theLetThing, doThing) которые используются этим окружением, должны быть заявлены в нем, ДО начала интерпретации кода.


Например:
function doThing() {
console.log( theThingA );
var theThingA = "AAAAAA";
}

Выполнение console.log не приводит к какой-либо, исключительной ситуации, потому что идентификатор theThingA уже был инициализирован значением undefined на момент старта интерпретации кода функции.

Именно этот процесс, и описывают безграмотным термином hoisting или всплытие.


Что говорит нам официальная спецификация
Официальная спецификация, содержит только один термин, с словосочетанием схожим со словом hoisting - это hoistable declaration.
Который касается только function declaration и только их. (В том числе производных, например генераторов_

Если бы, на уровне спецификации, существовал какой-то HOISTNG в той форме, в которой его спрашивают на собеседовании, то спецификация, обязана была бы включать в себя ВСЕ множество выражений - от var до function, а не только function.

В то же время спецификация описывает hoistable declaration СТРОГО КАК function declaration. Даже function expression не попадают под это определение.

Вместо ИГОГО
Никакого термина hoisting, в рамках официальной спецификации не существует, в той плоскости определения в которой его спрашивают на собеседовании. И никогда не существовало.

Есть группа выражений, содержащих ключевое слово function, поведение которых описано в спецификации под термом hoistable declaration. Под этим же термом нет И БЫТЬ не может никаких var let или const.

Процесс так называемого "всплытия", в спецификации, описан в стадии подготовки выполнения кода функции.
Подчеркиваю ПОДГОТОВКИ ВЫПОЛНЕНИЯ КОДА ФУНКЦИИ. той самой функции, которая оказывается hoistable declaration в том числе.


Краткий тезис -
если бы в спецификации был hoisting, как часть языка, то в нем бы описывалось все то, что привыкли спрашивать на собеседовании: var let const function

в то же время, в спецификации, есть термин hoistable который касается только function, и принципиально не может содержать var let или const.