На самом деле это так. Он хочет оценить (выполнить) something1
. У этого есть один параметр, который он хочет передать. Но этот параметр является вызовом функции, поэтому сначала он должен вызвать эту функцию, чтобы получить результат. Так и называется something2
. Но у этой функции есть 1 параметр, который она должна передать, поэтому она оценивает параметр something3
.
Теперь все в порядке: он может вызвать something2
с вычисленным параметром, а затем получить возвращаемое значение этой функции, которое он передает something1
.
Так что это делает ваше «сначала что-то1, потом что-то2, потом что-то3». За исключением того, что он не может сделать первое, не выполнив сначала второго, не выполнив сначала третьего. Что и требовалось доказать.