Выбор ответа Junior Функции, замыкания, генераторы спрашивают часто обновлено

Захват переменной в анонимной функции

Вопрос

Что выведет код?

$x = 1;
$f = function () use ($x) { return $x; };
$x = 2;
echo $f();

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 1. Анонимная функция function () use ($x) захватывает значение $x в момент создания замыкания.

Варианты ответа

  1. 2
  2. Ошибку: переменная $x не определена
  3. null
  4. 1правильный ответ

Разбор

Анонимная функция function () use ($x) захватывает значение $x в момент создания замыкания. Последующее $x = 2 его не меняет: выводится 1. Чтобы видеть изменения, захватывают по ссылке: use (&$x). Стрелочная функция fn() => $x тоже захватывает по значению, но автоматически.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.