Что выведется в консоль при выполнении этого кода? Почему?
(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.
Комментариев нет:
Отправить комментарий