javascript interview question #6

Функции в JavaScript могут принимать произвольное количество аргументов. Но что будет выведено на экран?true или false?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

В JS, у всех функций есть доступ к внутреннему массиву arguments который хранит все аргументы, переданные в функцию.

Мы можем получить доступ к этим элементам по индексу. Поэтому логично было бы предположить, что обе функции regularFunction и arrowFunction вернут true.

Единственная проблема в том, что стрелочные функции — исключение из правила и у нет доступа к массиву arguments.

В строке 8 может произойти две разные ситуации. Скорее всего ты увидишь ошибку ReferenceError: arguments is not defined.

Но может быть и другой сценарий. Например, если запустить этот код в Node.js, то в arguments[2] скорее всего будет лежать что-то похожее на такой объект

Module {
  id: '.',
  path: '/workdir_path',
  exports: {},
  parent: null,
  filename: '/workdir_path/scriptName.js',
  loaded: false,
  children: [],
  paths: [
    '/node_modules'
  ]
}

В этом случае ошибки не будет и в консоль выведется сообщение false, так как 3 не равняется объекту показанному выше.


ОТВЕТ: сообщения false или ReferenceError появятся в консоли после выполнения кода.