Допустим, я пишу JS-библитеку и хочу, чтобы некоторые функции были доступны по более, чем одному имени — в предметной области есть несколько устоявшихся обозначений одного понятия.
Например, в графике прозрачность цвета/слоя бывает обозначают как alpha и как opacity. В некоторых контекстах традиционно применяется первое, в других второе — но в обощенном случае термины можно считать эквивалентными.
Это была преамбула, теперь фабула.
Я задумался, что дает нам такая конструкция?
x = y = function() { ... }
Это будут две раздельно существующие функции-копии? Или две ссылки на физически одну функцию?
Делаем простой тест в консоли Хрома:
x = y = function(i) { return i*i; }
x(5) // 25
y(5) // 25
y = function(i) { return i*i*i; }
y(5) // 125
x(5) // 25
Выходит, что это независимые копии? То есть это двойное/тройное/итд использование памяти.
Как это можно обойти? Есть ли на этот счет какие-то общепринятые методики, best practices, так сказать?
Или моя проверка была некорректна?