Функции в 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
появятся в консоли после выполнения кода.