Почему свойство аргументов в объекте функции имеет значение null? - PullRequest
0 голосов
/ 24 февраля 2020

Код:

function foo(a, b, c) {
    console.log('hi');
}

console.log(foo);

Вывод:

(расширенный)

foo(a, b, c)
    arguments: null
    caller: null
    length: 3
    name: "foo"
    prototype: Object {...}
    <prototype>: function()

Вопрос:

Глядя на свойства функции, большинство из они имеют смысл:

  • Абонент имеет значение null, потому что я вызвал foo (); для глобального объекта
  • имя равно "foo" из-за определения функции
  • длина - это число аргументов

Но почему аргументы возвращают ноль? Как мы можем заполнить этот список?

РЕДАКТИРОВАТЬ: Я не говорю о свойствах того, что возвращает foo(). Я говорю о свойствах самого объекта функции foo.

Чтобы уточнить: введите описание изображения здесь

1 Ответ

1 голос
/ 24 февраля 2020

Свойство Function.prototype.arguments доступно только внутри функции, когда она (или некоторый вызов этой функции) запущена, но она устарела, поэтому ее не следует использовать:

function foo(a, b, c) {
    console.log('hi');
    console.log(foo.arguments);
}

foo(1, 2, 3);

Вместо этого используйте автономный arguments или (предпочтительно) синтаксис rest и проверьте его .length, чтобы увидеть, каким образом были переданы аргументы:

function foo(...args) {
    console.log(args);
}

foo(1, 2);

(все еще имеет смысл проверять аргументы во время работы функции)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...