Всплытие или Hoisting - это способность интерпретатора знать о функциях или переменных еще до того, как они будут объявлены. Посмотрим пример: function sum( ) { return a + b; } var a = 10; var b = 10; sum( ); // вернет 20 Объявляется функция, которая использует переменные a и b еще до того, как они были объявлены. Чтобы понять почему такой код работает, можно представить себе, что перед выполнением кода, интерпретатор сканирует код на предмет переменных и перемещает их объявление в начало их областей видимости. В результате, интерпретатор “видит” вышеуказанный так: var a, b; function sum( ) { return a + b; } a = 10; b = 10; sum( ); // вернет 20 Теперь в коде нет ничего необычного и всё кажется более логичным: сначала объявляются переменные, затем им присваиваются значения и только после этого происходит вызов функции. Обратите внимание, что “всплывают” только объявления переменных, но не присваивание им значений! Посмотрите пример: function su