Конечно используется, иначе 1) вам бы эти фичи не понравились, 2) во всех справочниках на соответствующих статьях появилась бы плашка "considered harmful, to be deprecated in near future, avoid using".
Не вижу особого смысла в примерах, но все же - упорядоченное исполнение скриптов:
const scripts = new Map();
scripts.set("first", "console.log('Here is the first script.')");
scripts.set("second", "console.log('Here is the second.'");
for (var [script_name, code] of scripts) {
try {
eval( code );
} catch(e) {
console.log(`Error occured during execution of "${ script_name }" scripts!`);
}
}
Как эта чертовщина вообще работает? Было бы круто если бы кто-нибудь объяснил.
Первый вариант я вообще понять не могу, второй попроще: c это счётчик, а arr|c работает просто как 0|c чтобы вернуть значение счётчика.
UPD: по первому стало понятно после прочтения документации - map вторым аргументом получает thisArg, а т.к. n=0 создаёт глобальную переменную, то счетчик n доступен и в функции, и извне.
vaskadogana, хм, garbage collection? Создаётся впечатление, что вы слишком много создаёте лишних переменных или что-то вроде того. Вероятно и правда лучше всего было бы посмотреть на ваш код.
Егор Живагин, полагаю вы всё же что-то перепутали, т.к. больше/меньше это относительно сложная проверка, сложнее чем проверка на неравенство или просто неявный вызов toBoolean, но тестик прилагаю ниже.
Обходите просто циклом. Воркеры конечно решение, но для начала можно попробовать просто разбить обработку на несколько частей: обрабатываете часть, сохраняете номер чанка, кладёте в очередь функцию обработки следующей части.
Если нужно создавать массив для каждой группы длиной a.length, то массив result должен иметь длину a.length, и во внешнем цикле надо создавать массив на i-том месте, а во внутреннем - класть на i-тое место этого массива нужное значение.
Количество элементов результирующего массива известно заранее, совсем незачем в каждой итерации менять его структуру если можно изначально иметь массив нужной длины.
Потому что для объектов операция сравнения работает по-другому - она сравнивает внутренние ссылки на объекты: ссылки разные - значит объекты разные, результат сравнения равен false; ссылки одинаковые, значит это один и тот же объект, результат сравнения true
Ну, если вам действительно нужно чтоб это кто-то сделал за вас, то вам и правда на другой сайт. А вообще по картинке видно, что никакого монстра тут нет, есть только маленькие монстрики, в том смысле что это не одна большая таблица, а много маленьких, каждая из которых относительно тривиальна в верстке.
Саблайм страдает от туууучи проблем связанных с внутренними ошибками, подавляющее большинство из них лечится переустановкой или удалением папки Packages. Либо удалите полностью и переустановите саблайм, либо поставьте его на чистую систему и после установки каждого нужного плагина проверяйте наличие нужного функционала. Функционал не пропал? Повезло. Пропал? Смотрите что это за плагин, смотрите список issues и наличие у него конфликтующего функционала.
lightalex, "не всегда даст", "Иногда дает доступ" - не вижу противоречий,
"Но не всегда, тут как браузер себя поведет" - у каждого браузера есть вполне определенное поведение относительно document.referrer. document.referrer это единственный для фронта, но всё равно ненадёжный способ узнать с какой страницы пришёл пользователь.
Не вижу особого смысла в примерах, но все же - упорядоченное исполнение скриптов: