Выбор ответа Junior Функции, замыкания, генераторы спрашивают часто обновлено
Захват переменной в анонимной функции
Вопрос
Что выведет код?
$x = 1;
$f = function () use ($x) { return $x; };
$x = 2;
echo $f();
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 1. Анонимная функция function () use ($x) захватывает значение $x в момент создания замыкания.
Варианты ответа
2- Ошибку: переменная
$xне определена null1правильный ответ
Разбор
Анонимная функция function () use ($x) захватывает значение $x в момент создания замыкания. Последующее $x = 2 его не меняет: выводится 1. Чтобы видеть изменения, захватывают по ссылке: use (&$x). Стрелочная функция fn() => $x тоже захватывает по значению, но автоматически.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.