var users = [];
function addUser(user) {
users.push(user);
}
function getUserById(id) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
if (user.id == id)
return user;
}
return null;
}
function removeUserById(id) {
users = users.filter(function(user) {
return user.id != id;
});
}
function getMaleUsers() {
return users.filter(function(user) {
return user.gender == 'male';
});
}
Найдите функции с побочными эффектами.
Если я правильно понял суть теории, помимо этого руководствовавшись ответом на аналогичный вопрос, то здесь будет одна функция, не имеющая побочного эффекта, основываясь на теории, я предположил, что это функция getUserByID, что является не правильным ответом, после чего я перепробовал все варианты, но к правильному решению не пришел, прошу помочь разобраться
Добрый день, Николай Дмитриевич.
Судя по Вашим ответам, Вы не понимаете сути “побочных эффектов”. Давайте я объясню Вам это на яблоках.
Допустим у Вас есть ящик с яблоками. Вы только что сложили туда, снятые с Вашей любимой яблони, 100 яблок.
И к Вам в гости зашёл сосед. Допустим, его роль буду выполнять я.
Побочным эффектом мы будем называеть состояние, при котором количество яблок в ящике будет изменяться. Тогда наш диалог (из моих вопросов и ваших ответов будет аналогом вызова функции)
Например, я задаю Вам вопрос:
Эта функция не имеет побочного эффекта, потому что яблок не стало ни меньше ни больше.
Теперь я спрашиваю:
В этой функции Вы изменили состояние своего ящика и возник “побочный эффект”. Теперь, когда Ваша супруга или другой близкий попросит самое красное Вы будете знать, что его сожрал сосед и отдадите другое яблоко. А того, самого классного, уже нет в ящике. Возник “побочный эффект”.
Другими словами, “побочный эффект” это такой эффект в функции, когда состояние программы меняется. Вы можете попросить “дать вам снова самое красное яблоко”, однако, это будет уже другое яблоко и в ящике будет на -1
яблоко меньше.
Теперь третий диалог:
Тут тоже возник побочный эффект: яблок в ящике стало больше, а функция уже закончилась.
Не имеющими побочного эффекта являются те функции, которые не приводят, после своего завершения, к изменению состояния программы.
Такие функции что-то вычисляют и возвращают результат. Однако, само состояние программы остаётся неизменным.
Надеюсь, это вам поможет.
С уважением,
Капитан Очевидность — Лахтин Станислав Евгеньевич