Объект Event при передаче параметров

Пусть у нас есть некоторая функция func, которую мы хотим использовать в качестве обработчика события. Пусть эта функция принимает некоторый параметр:

jsxfunction func(arg) {
  console.log(arg);
}

Давайте используем эту функцию в качестве обработчика, передав ей параметр:

jsxfunction App() {
  function func(arg) {
    console.log(arg);
  }
  
  return <div>
    <button onClick={() => func('eee')}>act</button>
  </div>;
}

Пусть теперь кроме параметра мы хотим получить в нашей функции объект Event. Для этого нам нужно поступить следующим образом:

jsxfunction App() {
  function func(arg, event) {
    console.log(arg, event);
  }
  
  return <div>
    <button onClick={event => func('eee', event)}>act</button>
  </div>;
}
Задание 1

Расскажите, как работает приведенный код.

Задание 2

Переделайте приведенный код так, чтобы функция принимала два параметра.

Задание 3

Модифицируйте предыдущую задачу так, чтобы объект с событием передавался первым параметром функции, а не последним.

Задание 4

Модифицируйте предыдущую задачу так, чтобы объект с событием передавался вторым параметром функции, находясь между первым и третьим параметрами.