MrSpenk
@MrSpenk

Как это работает?

Есть некий скрипт на JS, может мне кто-то объяснить, как это работает?

var scripta = ['slice', 'join', ..., 'split', 'map', 'charCodeAt', 'toString' ];  // оставил часть для наглядности

(function(c, d) {
	var e = function(f) {
		while (--f) {
			c['push'](c['shift']());
		}
	};
	e(++d);
}(scripta, 0xb9));
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Массив всяких строк, которые являются названиями методов некоторых объектов в 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.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы