javascript interview question #46

Что хранится в поле 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 функций хранится количество параметров определенное при создании функции. Поэтому, на экране появятся значения:

0
1

Так как у функции sayHello один параметр, а у confirmSubscription параметров нет.