JavaScript: arguments и this
Параметр arguments
Параметр arguments
является объектом, который содержит все аргументы переданные функции.
Объект arguments
похож на массив, но не имеет никаких его методов и свойств, кроме свойства length
. Поскольку он похож на массив, обратиться к переданным функции аргументам можно так же, как и к элементам массива – с помощью квадратных скобок, внутри которых указывается индекс аргумента. Аргументы нумеруются, начиная с нуля:
function foo () { alert("Переданные аргументы: " + arguments[0] + ", " + arguments[1] + "\nВсего передано аргументов: " + arguments.length); } foo(5, 10);
В этом примере в объявлении функции не были указаны параметры, но несмотря на это, функция работает без каких-либо предупреждений и ошибок. Это говорит о том, что параметры – это удобство, а не необходимость.
Параметры функции не синхронизируются со значениями объекта arguments
:
function foo (n1, n2) { arguments[0] = 10; arguments[1] = 20; n2 = 30; console.log("n1: " + n1 + "\nn2: " + n2 + "\narguments[0]: " + arguments[0] + "\narguments[1]: " + arguments[1] + "\nПередано аргументов: " + arguments.length); } foo(5); // n1: 5 // n2: 30 // arguments[0]: 10 // arguments[1]: 20 // Передано аргументов: 1
Параметр this
Этот параметр ссылается на объект, который производит вызов функции. Объект, который вызывает функцию иначе ещё называют контекстом вызова функции. Если функция вызывается как функция (а не как метод), параметр this
в качестве значения получает значение undefined
:
function foo() { console.log(this === undefined); } foo(); // true
С этой темой смотрят: