Подъем функции в ES6 [дубликат]

97
06 октября 2019, 11:50

На данный вопрос уже ответили:

  • Объявление функции в if и ее подъем 2 ответа

Почему объявление функции поднимается в начало блока, а ее идентификатор доступен аж в начале сценария с не определенным значением (undefined) ?

<script>
console.log(foo); // undefined
if(true) {
  console.log(foo()); // "hello"
  function foo() {
    return 'hello';
  }
}
console.log(foo()); // "hello"

</script>
Answer 1

Начиная с es6, функции можно объявлять внутри блоков if. В этом случае область их видимости будет заканчиваться областью if. Во избежания подобных проблем с undefined нужно использовать директиву 'use strict', тогда при обращении к необъявленной функции foo будет ошибка. Без использования этой директивы, результат будет разница в зависимости от внутренней реализации стандарта в том или ином браузере.

'use strict'
console.log(foo); // undefined
if(true) {
  console.log(foo()); // "hello"
  function foo() {
    return 'hello';
  }
}
console.log(foo()); // "hello"

https://stackoverflow.com/questions/10069204/function-declarations-inside-if-else-statements

READ ALSO
Модель, интерфейс, свервис [закрыт]

Модель, интерфейс, свервис [закрыт]

я начинающий веб-разработчик и на данный момент прохожу тестовое задание для вступления в компаниюСуть проблемы заключается в том, что тест...

121
Save to Drive Button

Save to Drive Button

Подскажите где найти пример как сделать Save to Drive Button на React, никак не могу найтиСпасибо

108
Проблема с переменнами JS [закрыт]

Проблема с переменнами JS [закрыт]

Как сделать что бы при каждом нажатию на кнопку переменная увеличивалось

99
Ad Words Google разработка

Ad Words Google разработка

Хочу сделать скрипт, который бы уведомлял меня о том, что заканчиваются деньги на счёте рекламной компанииДоступ к расходам нашёл, через...

125