Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

Именованные функциональные выражения (Named Function Expression)

Что выведется в консоль при выполнении этого кода? Почему?
(function test() { test = 123; console.log( test ); }())
В консоль выведется эта функция:
function test() { test = 123; console.log( test ) ;}
Почему так происходит?


Ответ

Согласно этой статье, перезаписать имя NPE, доступное внутри самого NPE и используемое для рекурсивного вызова (вместо устаревшего arguments.callee), нельзя. В MDN, к сожалению, про запрет переписывания ничего не сказано, однако практика (ваш пример) говорит о том, что это всё же верное утверждение.
Поэтому test = 123; не даёт никакого эффекта, и console.log выводит первоначальное значение test - само NPE.

Комментариев нет:

Отправить комментарий