
JavaScript. Что выйдет, если вызов Say('Вася'); стоит в самом начале, в первой строке следующего
кода:say ('Вася'); // Не будет ли ошибки? var phrase = 'Привет';function say (name) { alert( name + " , " + phrase );}Что выведет?

Ответы на вопрос

Ответ:
Ошибки не будет, выведет "Вася , undefined".
Объяснение:
Функция say вызывается до объявления phrase, поэтому внутри функции переменная phrase не будет прочитана (так как её ещё нет).
Если объявить phrase до вызова say, то alert выведет "Вася , Привет".
Пример работы:





Ответ:
Ошибки не будет, но функция выведет Вася , undefined
Объяснение:
Работает это так: JS объявляет переменную, только когда добирается до нее по ходу выполнения кода. Т.е., когда выполнялась функция say, переменная phrase еще не была объявлена и имела значение undefined.
С другой стороны, ошибки не будет, так как функция say корректно выполнится, несмотря на более позднее объявление в коде. Это происходит из-за того, что мы имеем дело с так называемым Function Declaration, который объявляется не в момент, когда до него доходит код, а сразу по запуску программы.
На скриншоте показан пример работы такого выражения.
Если хочешь лучше разобраться в этой теме - вот ссылка на подробную статью:
https://learn.javascript.ru/function-expressions




В данном коде не будет ошибки. Ваш код выглядит так:
javascriptsay('Вася'); // Не будет ли ошибки?
var phrase = 'Привет';
function say(name) {
alert(name + " , " + phrase);
}
В данном случае, хотя вызов функции say('Вася')
находится перед определением переменной phrase
, код все равно будет работать без ошибок. Это происходит потому, что в JavaScript переменные, объявленные с использованием ключевого слова var
, имеют поднятие (hoisting) - они поднимаются в начало области видимости, в которой они объявлены.
Когда интерпретатор JavaScript обрабатывает ваш код, он сначала "поднимает" объявление переменной phrase
, затем "поднимает" объявление функции say
, и только после этого начинает выполнение кода. Таким образом, в момент выполнения вызова say('Вася')
, переменная phrase
уже будет определена.
Результат выполнения данного кода будет:
Вася , Привет
Таким образом, функция say
получит аргумент 'Вася'
и объединит его со значением переменной phrase
, которая равна 'Привет'
.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili