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

«n» в JavaScript

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

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

[]

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

[][]

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

[][[]]

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

[][[]]+[]

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

[[][[]]+[]]

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

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

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

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

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

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

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

++[0][0]

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

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

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

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


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

Источник: Reddit

Ещё интересное для вас:
Тест: чьё это рабочее место? Угадываем айтишников по их столам
Тест: что вы знаете о работе мозга?
Тест: какой язык программирования вам стоит выбрать для изучения?

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

Nsys Group
Web–разработчик
Web–разработчик
Nsys Group, Санкт-Петербург, 100 000 ₽ (до налогов)
CallKeeper
JavaScript-разработчик
JavaScript-разработчик
CallKeeper, Москва, от 100 000 до 150 000 ₽
«Сбербанк-Технологии»
Программист ASP.NET / C#
Программист ASP.NET / C#
Сбербанк-Технологии, Москва