Знание разницы между аргументами и параметрами может быть важным.

Но прежде чем мы начнем, отметим, что наш новый курс Основы Angular вышел и совершенно бесплатен. Верно. 100% бесплатно. Ничего за платным доступом. Это не полугодие или что-то в этом роде. В этом вся энчилада. Иди проверь.

А для просмотра видео версии этого блога нажмите здесь.

Недавно я провел небольшой опрос в Твиттере, чтобы узнать, знают ли люди в целом разницу между параметрами и аргументами. Результаты опроса оказались довольно интересными.

Только 50% людей были уверены в разнице между аргументами и параметрами, что делает это хорошей темой для проверки.

Аргумент — это значение, которое вы передаете в функцию. Параметр — это имя, которое функция присваивает этому значению. В этом разница. Часто мы используем эти два термина взаимозаменяемо, и в большинстве случаев разница не имеет значения. Но это может иметь значение, поэтому изучение различий и умение использовать соответствующий термин в нужное время может помочь в общении всех видов.

В приведенном выше примере «itemName» и «quantity» являются параметрами, а «handSanitizer» и 300 — аргументами.

Это на самом деле подсказывает нам, почему объект arguments в JavaScript называется аргументами, а не параметрами. Аргументы — это значения, а не имена. Объект arguments содержит значения, но не заботится об именах.

Если вы не знакомы с объектом arguments, это глобальный объект, который предоставляет вам информацию об аргументах, используемых в вызове функции для текущего контекста.

Итак, в этом примере:

Обратите внимание, что объект arguments никогда не создавался и на него не ссылались, он просто существует. Внутри этой функции эти три вызова выведут из системы «2», «Дезинфицирующее средство для рук» и «300» соответственно.

Теперь, почему существует объект arguments, когда у нас все равно есть именованные параметры?

Что ж, JavaScript настолько неуклюж, что ему все равно, если вы передадите ему больше аргументов, чем есть параметров.

А теперь посмотрите на предложение, которое я только что напечатал. Это БОЛЬШОЙ пример того, почему нам нужно понимать разницу между аргументами и параметрами. Если вы используете эти два термина взаимозаменяемо, то предложение не имеет смысла. Но это не одно и то же. И их понимание позволяет нам узнать о таких вещах, как объект arguments.

Итак, продолжая, вы можете передать больше аргументов, чем есть параметров. Давайте рассмотрим случай для этого. Допустим, нам нужна функция, которая может получать список чисел и складывать их все, но не требует, чтобы они были в массиве, и вместо этого может передаваться как отдельные аргументы. Сделать это с отдельными аргументами было бы невозможно, и даже если мы приложим все усилия, это будет беспорядочно.

Но с объектом arguments это тривиально. Поскольку объект arguments содержит только те аргументы, которые уже были переданы, по сути, это массив чисел, которые мы просто складываем.

К сожалению, arguments — это только массивоподобный объект, а не полный массив, поэтому мы не можем делать такие вещи, как reduce().

Но спасибо EcmaScript за то, что пришел на помощь. Rest Parameter — это способ получить лучшее из обоих миров.

Остаточный параметр — это специальный параметр в сигнатуре функции (хорошо, что мы знаем, что такое параметр, а не аргумент), который обозначается тремя точками перед ним. Это должен быть самый последний параметр в сигнатуре функции. Этот параметр получает все аргументы, у которых еще нет именованных параметров, и представляет собой массив этих аргументов.

Итак, наш новый метод AddEverythingUp будет выглядеть так:

Вы можете смешивать именованные параметры (только перед остальным параметром).

Таким образом, в большинстве случаев параметр rest предпочтительнее, чем объект arguments, и многие разработчики теперь считают, что объект arguments — это запах кода.

И это остальные параметры, а также аргументы и параметры. Думаешь, ты понял? Попробуйте эту задачу и посмотрите, сможете ли вы ее решить!

Как научиться в пять раз быстрее

Здесь, в Thinkster, мы используем образовательную науку, чтобы обучать вас в пять раз быстрее, чем что-либо еще. Как? При правильном обучении, основанном на образовательных принципах и практических упражнениях, вы сохраните от 75% до 90% того, что вы узнали. Без этих методов вы помните только от 7% до 15% того, что вы узнали. Вот почему вы можете посмотреть видео или курс или прочитать блог и почувствовать, что вам нужно посмотреть еще пару, прежде чем вы действительно «поймете это».

Вы можете увидеть это в действии на наших курсах. И вы можете получить его бесплатно на нашем курсе «Основы Angular». Иди проверь.

Удачного кодирования!

Подпишитесь на мою рассылку здесь.

Посетите нас: thinkster.io | Facebook: @gothinkster | Твиттер: @GoThinkster