// Замыкание хранит флаг вызова и закешированный результатfunction once(func) { let called = false; let result; return function (...args) { if (!called) { called = true; result = func.apply(this, args); // сохраняем контекст вызова } return result; };}