Массив всяких строк, которые являются названиями методов некоторых объектов в JavaScript. Но в приведенном фрагменте кода это не имеет никакого значения, т.к. они не выполняются.
Объявляется анонимная функция, которая тут же и вызывается. В неё параметрами передают этот массив и число 185
, записанное в 16-ричной системе как 0xB9
.
Внутри функции объявляется ещё одна функция e(f)
, ожидающая целочисленный параметр f.
Цикл while выполняется пока это число f не достигнет нуля, уменьшаясь на 1 на каждой итерации.
Внутри цикла вызывается метод массива push()
, который вставит в конец массива значение. К свойствам и методам объекта можно обращаться и через точку myArray.push()
и в квадратных скобках передав строку с названием свойства или метода: myArray['push']()
Вставляется в массив значение, вынутое из него же, из самого начала. Выдёргивается оно методом массива shift()
– записанным так же в виде строки в квадратных скобках.
Вызывается функция e()
с числом 185, увеличенным на 1, т.е. 186. В цикле это число сначала уменьшается на 1, затем оценивается, не стало ли оно равным нулю. Если ещё не стало, то выполняется тело цикла. Т.е. тело цикла выполнится 185 раз: для 185, 184, 183, ... 2 и 1.
Вся эта конструкция сдвинет содержимое массива на какое-то число позиций, зависящее от его длины.