Comments 12
Есть ошибка. Если вызвать функцию определенную с помощью function expression до ее определения, будет TypeError: sayHello is not a function
Ошибки нет, т.к. функция sayHello объявлена через const, а не через var.
С const согласен, не посмотрел пример сам, тогда в описании к примеру, тоже бы написать const.
Ну да и ошибка там reference error будет, а не то, что неопределено значение
— Если запустить этот кусок кода в консоли браузера Chrome, то будет выведено: «sayHello is not defined», а это означает, что функция sayHello не определена (не объявлена), что и написано в примере.
— В целом не ставилась задача точно отобразить, какая ошибка будет при выполнении кода. Важно было показать, что функция вида «function expression» не будет выполнена, если будет вызвана до своего объявления.
— В целом не ставилась задача точно отобразить, какая ошибка будет при выполнении кода. Важно было показать, что функция вида «function expression» не будет выполнена, если будет вызвана до своего объявления.
До меня дошло, спасибо!)
По мелочи:
setTimeout(_ => console.log(`Made a ${flavor} cake!`, 1000)); — опечатка с закрывающимися скобками.
setTimeout(_ => console.log(`Made a ${flavor} cake!`, 1000)); — опечатка с закрывающимися скобками.
К выводу по второму пункту надо добавить, что возвращаться должна функция, иначе это не замыкание. В цитате ниже термин модули — но это о функциях с замыканием.
Модули требуют две ключевых характеристики: 1) внешнюю функцию-обертку, которую будут вызывать, чтобы создать закрытую область видимости 2) возвращаемое значение функции-обертки должно включать в себя ссылку на не менее чем одну внутреннюю функцию, у которой потом будет замыкание на внутреннюю область видимости обертки.Kyle Simpson: Вы не знаете JS
https://learn.javascript.ru/closures
Здесь более подробно описано про области видимости. Мне проще запоминать то, что я понимаю, чем аналогии. Может поможет кому-то.
Sign up to leave a comment.
Области видимости и замыкания в JavaScript