Как работает функция?

Смотрю урок по ECMA 5, в котором есть слайд:
etSMz69V.png
В видео рассказывается что если такой трюк(создать ссылку, а потом первоисточник занулить) делать с переменными, то они будут оставаться, фишка в том что ячейки переменных остаются на своих местах, просто меняем указатели на ячейки
Но если такой трюк проделывать с функциями , то должна быть ошибка.
Потому что мы жестко обнуляем ячейку с функцией.

Делаю у себя на компе и ошибки нету, что за чудеса такие? ((
Подскажите плиз
"use strict";

function f(str) {
    return str;
}
var g = f;
f = null;
console.log(g('hi'));
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Ошибка из-за того, что внутри функция f вызывает себя рекурсивно. На момент вызова переменная f уже равна null, соответственно, её нельзя вызвать как функцию.
У вас рекурсии нет, поэтому нет и ошибки.
Про ячейки памяти лучше не думайте, работая с js, только запутаетесь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abyrkov
@abyrkov
JavaScripter
Автор вызывает f в f
Т.к. при вызове g f - null - то ошибка
Если писать без вызова f - ошибки не будет)

Гоните нахрен этого автора
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы