[[][[]]+[]][+[]][++[+[]][+[]]] — это «n» в JavaScript

«n» в JavaScript

Недавно на Reddit появился пост с объяснением, почему конструкция [[][[]]+[]][+[]][++[+[]][+[]]] в языке JavaScript вычисляется как символ «n». Переводим его для вас.

Итак, начнём с пустого массива:

[]

Теперь получим доступ к элементу пустого массива:

[][]

Какому элементу? Пусть это будет элемент с индексом пустого массива:

[][[]]

Это значение не определено, т.е. равно undefined, но если добавить к нему пустой массив, то получится строка «undefined»:

[][[]]+[]

Обернём её массивом:

[[][[]]+[]]

Теперь попробуем получить доступ к буквам этой строки. Для начала нам нужно получить доступ к самой строке внутри массива:

[[][[]]+[]][0]

А ведь ноль можно получить, если преобразовать пустой массив к числу:

[[][[]]+[]][+[]]

Буква «n» вторая в слове «undefined», значит, индекс у неё 1:

[[][[]]+[]][+[]][1]

Но как нам получить 1? Конечно же, увеличить на единицу 0, который мы уже научились получать ранее:

++[0][0]

И, как и раньше, нули тоже можно записать через скобки:

++[+[]][+[]]

Итак, собираем всё вместе и получаем:

[[][[]]+[]][+[]][++[+[]][+[]]]


Больше почитать про похожие трюки можно в нашей статье про магию JavaScript — в ней рассказывается, что интересного можно сделать, используя всего 6 символов.

Источник: Reddit

Вакансии в тему:

Лого компании «Finch»
Junior Frontend-разработчик
Junior Frontend-разработчик
Finch, Москва, от 70 000 до 90 000 ₽ (до налогов)
Лого компании «Wheely»
Frontend Developer
Frontend Developer
Wheely, Москва, 180 000 ₽
Лого компании «CSBI»
Full-stack разработчик ASP.NET
Full-stack разработчик ASP.NET
CSBI, Санкт-Петербург, от 80 000 до 120 000 ₽