Добрый день, сегодня мы поговорим, о том, что нужно знать при передаче параметров внутрь функции в js.
Допустим, что у нас есть простая функция которая принимает два аргумента и выводит их в консоль.
В целом все просто, мы создали две переменные a и b вызвали функцию с этими переменами и вывели их в консоль, но действительно ли те две переменные внутри это одно тоже что и переменные которые мы положили? Тут я имею ввиду, мы же можем поменять имена для переменных и все будет по прежнему работать, к примеру в функции будут параметры не а и b, а например c и d.
Хорошо, теперь мы знаем, что так же можно изменить имена для удобной работы внутри функции, но что еще мы должны знать?
Например как работает изменение одной из переменных или как использовать значения по умолчанию? Много чего еще можно спросить относительно работы функций, но сегодня мы обсудим только две темы
- Возможно ли изменение переменной внутри функции и если да, то как?
- Как использовать значение по умолчанию и как это использовать если у вас много параметров?
Начнем с изменения одной из переменных. Сразу скажу, что это возможно, но частично и я покажу как, но чуть позже, а сейчас давайте попробуем просто переписать переменные. Для простоты они были объявлены с помощью let, чтобы точно можно было переписать
Как видно из результата в консоли ничего не поменялось. На самом деле все поменялось, просто внутри функции, если обратиться внутри функции к переменным a, b, c то они будут равны 1. Но цель была изменить переменные которые находятся за функцией.
В таком случае у нас ничего не получится, если только переменная не является объектом, но и то только частично.
Тут вы можете возразить, ты все время пишешь про частичное изменение, но, что это значит?
Это означает, что для объектов и объекто-подобных структур которые передаются по ссылке ты можешь меня их внутренность, но не можешь поменять тип.
Для больше наглядности и понимания как это работает можно посмотреть на пример без функции
Благодаря этому мы можем сказать, что параметры внутри функции передаются по значению, а это означает, что изменение значения параметра, будет видно только внутри функции. Это одна из причин по которой работают замыкания.
Так с этим разобрались, а что касается значений по умолчанию?
Для того, что объявить параметр функции с значением по умолчанию, то достаточно указать рядом чему он равен, к примеру
Но что если нам нужно не передавать значение в функцию а использовать по умолчанию, в это случае нам поможет undefined
undefined - сообщает функции о том, что значение которое нужно использовать для параметра неопределенно, поэтому возьми значение по умолчанию. Этот трюк работает только c undefined
Надеюсь вам стало чуть понятней как работают параметры функции, если есть вопросы или возражения, то добро пожаловать в комментарии там и обсудим.