Не корректно работает код. Вызов функции при проверке условия

Рейтинг: 0Ответов: 0Опубликовано: 07.01.2023

Проблема заключается в том что при проверке условия в if я вызываю функцию lieToEmployer которая меняет значения объекта employee. И в итоге функция hireNewEmployee пишет что я не нанят на работу из-за возраста хотя значение возраст(>=25) позволяет принять меня на работу.

const filters = {
    age:       (a) => a >= 25,
    education: (a) => a === 'higher',
    experience:(a) => a >= 1,
};
const employee = {};
const defaultDescriptors = {
    writable: true,
    enumerable: true,
    configurable: true
};
Object.defineProperties(employee, {
    name: {
        ...defaultDescriptors,
        value: 'Dmitriy',
        writable: false
    },
    age: {
        ...defaultDescriptors,
        value: 21
    },
    education: {
        ...defaultDescriptors,
        value: 'middle'
    },
    experience: {
        ...defaultDescriptors,
        value: 0
    }
})
function hireNewEmployee (employee,filters) {
    const reasons = [];
    Object.entries(filters).forEach(([name,func]) => {
        if (func(employee[name]) === false) {
            function lieToEmployer (employee) {
                return Object.defineProperties(employee, {
                    age: {
                        value: 27
                    },
                    education: {
                        value: 'higher'
                    },
                    experience: {
                        value: 7
                    }
                });
            }
            lieToEmployer(employee);
            reasons.push(name);
        }
    });
    return reasons.length
        ? `Not hired: sorry we cannot hire you. Here is why: ${reasons.join(', ')}`
        : 'You are Hired! Congrats!';
}
console.log(hireNewEmployee(employee,filters));

Ответы

Ответов пока нет.