Я получаю немного OCD и хочу, чтобы избавиться от этого:Есть ли повторяющаяся оптимизация объявлений в Javascript?
const idSet = new Set(ids)
, когда я только использовать его, чтобы передать его в двух различных функции в качестве параметра.
Я хочу, чтобы иметь возможность всего new Set(ids)
дважды, один раз для каждого вызова функции, но я не уверен, будет ли этот движок V8 (я запускаю код на Node.js). Ему нужно только создать один Set (также функции, через которые я передаю Set, чтобы не изменять Set в любом случае).
Кто-нибудь знает:
а) ли оптимизация случается. б) что люди делают, чтобы проверить, что это действительно происходит (просто из любопытства).
Благодаря
Edit:
Что я возился над:
// I wanted to change something like this:
const idSet = new Set(ids)
const r1 = fn1(idSet)
const r2 = fn2(idSet)
// to this:
const r1 = fn1(new Set(ids))
const r2 = fn2(new Set(ids))
Теперь, когда я думаю об этом, наверное, есть какая-то более высокого порядка, функция шаблон, который делает что-то вроде этого (или я мог бы написать один ... но это могло бы превзойти первоначальную цель меньшего кода):
const [r1, r2] = hof([fn1, fn2], new Set(ids))
Больше оснований: ids
- это массив. Мне нужен был набор для fn1
и fn2
, но вызывающему коду не нужно, чтобы он был набором, и мне не нужна дополнительная переменная idSet
, когда я использую только ids
... но если runtime создает 2 отдельных набора ... это отходы, поэтому он остается.
Я не понимаю. Почему вы хотите создать два набора, но хотите создать только один набор? – Bergi
Я вижу. Не бойтесь локальных переменных, они дешевы и помогают с ясностью :-) Если это глобальная область, используйте IIFE: 'const [r1, r2] = (idSet => [fn1 (idSet), fn2 (idSet)]) (новый Set (ids)); ' – Bergi