Функция в JS это объект, и можно обращаться к его свойствам. Но есть собственные свойства, которые не стоит заменять своими значениями. Например
Article.bind, .call, .length
– небольшой список зарезервированных свойств.
Есть такой вариант: создавать функцию с нужной переменной окружения, к которой может обращаться только сама функция.
function addLocalProperty(value) {
let property = value;
return function() {
property++;
console.log(property);
}
}
const fn = addLocalProperty(0);
fn(); // 1
fn(); // 2