Что будет выведено в консоль?
Коллеги, всем привет. Не понимаю, почему в консоль будет выведено man, undefined?
var a = 'hello'; function b() < if (false) < var a = 'world'; >else < var b = 'man'; >console.log(b); console.log(a); > b();
По-поводу вывода значения переменной b = man мне понятно, а вот почему переменная а будет неопределена, не понимаю. В моем понимании а должно быть равно hello, т.к. при вызове функции b() значение переменной а должно взяться из внешней переменной, разве не так?
Отслеживать
6,788 6 6 золотых знаков 11 11 серебряных знаков 30 30 бронзовых знаков
задан 8 дек 2023 в 6:55
23 6 6 бронзовых знаков
Не зная JS сразу предположу, что a = undefined , т.к. блок var a = «hello»; не был затронут, соответственно переменной этой нет, что логично, по крайней мере в C# изначально идет проверка на наличие переменной в текущем scope, а потом уже снаружи (в классе, например), что подтверждается, если написать не console.log(a) , а console.log(this.a)
Javascript что будет выведено в консоль



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
JavaScript собеседование #46: Поле length у JS функций

Что хранится в поле length у JavaScript функций? Что будет выведено в консоль?
Поле length есть у многих сущностей в JavaScript.
Например, у массивов, в нем хранится количество элементов.
const arr = ['a', 'b', 'c']; console.log(arr.length); // 3
У строк — количество символов, длина строки.
const welcomeMessage = 'Hello!'; const goodbyeMessage = 'Goodbye!'; const emptyString = ''; console.log(welcomeMessage.length); // 6 console.log(goodbyeMessage.length); // 8 console.log(emptyString.length); // 0
У объектов нет поля length по умолчанию.
const user = < name: 'Jack', age: '32'>; console.log(user.length); // undefined
А у функций — оно есть. И хранится там совсем не “длина функции”, а количество параметров.
const sum = (a, b) => a + b; const log = (s) => console.log(s); const noop = () => <>; console.log(sum.length); // 2 console.log(log.length); // 1 console.log(noop.length); // 0
ОТВЕТ: В поле length у всех JavaScript функций хранится количество параметров определенное при создании функции. Поэтому, на экране появятся значения:
Так как у функции sayHello один параметр, а у confirmSubscription параметров нет.
- НАЧАТЬ ОБУЧЕНИЕ
- Собеседование JavaScript
- JavaScript
Console.log()
Список объектов JavaScript для вывода. Объекты выводятся в том порядке, в котором они были указаны при вызове метода. Пожалуйста, обратите внимание, что если вы логируете объекты в последних версиях Chrome и Firefox, в консоль залогируется не значение объекта, а ссылка на него. Это означает, что, возможно, в консоль будет выведено не значение объекта на момент вызова console.log() , а будет выведено значение объекта на момент открытия консоли.
Строка JavaScript, содержащая 0 и более подстановочных символов для замены (см. subst1 . substN ).
JavaScript-объекты, с помощью которых произойдёт замена подстановочных символов в msg . Это даст вам дополнительный контроль над форматом вывода.
Больше подробностей смотрите в разделе Вывод текста в консоль (en-US) документации console .
Спецификация
| Specification |
|---|
| Console Standard # log |
Совместимость с браузерами
BCD tables only load in the browser
Отличия от console.dir()
Вы можете спросить какая разница между console.dir() и console.log(). Это полезное отличие.

- console.log выводит элемент как HTML-дерево
- console.dir выводит элемент как JSON-объект
А именно, console.log даёт специальное обращение к DOM-элементам, тогда как console.dir — нет. Это особенно полезно, когда нужно видеть полное представление DOM JS-объектов.
Больше информации об этой и других функциях в Chrome Console API reference.
Логирование объектов
Не используйте console.log(obj); , Используйте console.log(JSON.parse(JSON.stringify(obj))); .
Так вы можете быть уверены, что видите значение obj в момент, его логирования.
Смотрите также
- Opera Dragonfly documentation: Console
- MSDN: Using the F12 Tools Console to View Errors and Status
- Firebug wiki: Console API — Firebug поддерживает дополнительные возможности реализации console.log(), такие как styled logging.
- NodeJS: Console API
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 16 нояб. 2023 г. by MDN contributors.
Your blueprint for a better internet.