<p><strong>Ответ: <code>'four'</code>.</strong></p>
<p>Блок <code>finally</code> всегда выполняется после блоков <code>try/catch</code> — даже в том случае, если в них есть операторы <code>return</code>.</p>
<p>Последний оператор <code>return</code> всегда «побеждает» другие. Не тот, который находится последним в теле функции, что было бы безумием, а тот, который выполняется последним. И речь тут идёт о такой же «победе», которую одерживает последняя операция присвоения значения одной и той же переменной. При этом те операции присвоения значения, которые не были выполнены, мы не учитываем.</p>
<p>На самом деле, спецификация <code>return</code> очень похожа на спецификацию операции присвоения значения переменной. Так, <code>return</code> присваивает вызову функции некий результат. Поэтому следующий вызов <code>return</code> перекрывает то, что было возвращено после предыдущего вызова <code>return</code>.</p>
<p><strong>Ответ: <code>'four'</code>.</strong></p>
<p>Блок <code>finally</code> всегда выполняется после блоков <code>try/catch</code> — даже в том случае, если в них есть операторы <code>return</code>.</p>
<p>Последний оператор <code>return</code> всегда «побеждает» другие. Не тот, который находится последним в теле функции, что было бы безумием, а тот, который выполняется последним. И речь тут идёт о такой же «победе», которую одерживает последняя операция присвоения значения одной и той же переменной. При этом те операции присвоения значения, которые не были выполнены, мы не учитываем.</p>
<p>На самом деле, спецификация <code>return</code> очень похожа на спецификацию операции присвоения значения переменной. Так, <code>return</code> присваивает вызову функции некий результат. Поэтому следующий вызов <code>return</code> перекрывает то, что было возвращено после предыдущего вызова <code>return</code>.</p>
Ниже представлено пояснение.
Ответ: 'four'
.
Блок finally
всегда выполняется после блоков try/catch
— даже в том случае, если в них есть операторы return
.
Последний оператор return
всегда «побеждает» другие. Не тот, который находится последним в теле функции, что было бы безумием, а тот, который выполняется последним. И речь тут идёт о такой же «победе», которую одерживает последняя операция присвоения значения одной и той же переменной. При этом те операции присвоения значения, которые не были выполнены, мы не учитываем.
На самом деле, спецификация return
очень похожа на спецификацию операции присвоения значения переменной. Так, return
присваивает вызову функции некий результат. Поэтому следующий вызов return
перекрывает то, что было возвращено после предыдущего вызова return
.