Функции

Обсуждение курса «Функции»

На стр. 17 “Немного приберёмся” курса “Функции” и в теории и в задании говорится о вводе переменных “flightsVariant1” и “flightsVariant2”. Но для решения задания имена этих переменных должны быть заданы без “s”: “flightVariant1”

2 Симпатий

Как лучше называть параметры функции? Должно ли имя параметра функции быть уникальным или может совпадать с именем глобальной переменной?

var userName = 'Ivan';
var sayHello = function (userName) {
   console.log (userName + ', hello!');
};

так нормально делать?

ну вообще нет, лучше так не делать. А то потом запутаетесь, а тот, кто ваш код будет поддерживать - будет вспоминать ваших родственников и в какой позе и у кого на спине он их вспоминать будет =)

параметры лучше конечно не путать с глобальными переменными. Дело в том, что параметры тоже создаются как локальные переменные внутри функции, т.е. все равно что мы объявим их явно внутри функции.
что я имею ввиду: вызов функции с таким именем отработает параметр и примет его как аргумент внутри консольлога.
вызов же другой функции с таким именем возьмет как аргумент именно глобальную переменную.
например, если в ваш код дописать:
sayHello('Игорь'); ====> 'Игорь, hello!' // тут мы строку передаем в функцию
alert(userName); ====> 'Ivan' // тут мы переменную передаем в метод
Стоит понимать, что операции внутри функции над userName в таком случае выполняются только над локальной переменной, не затрагивая глобальную.
К примеру, если мы допишем нашу функцию, перед консоль логом:
userName = userName + '-кун';
то при вызове функции получим: 'Игорь-кун, hello!'
вызов метода просто даст нам 'Ivan'.

1 Симпатия

Привет, ты берешь ученики?), Очень хочу стать твоим подованом, в последнее время осваиваю js, буду рад любому твоему ответу)

это вряд ли ко мне, я сам не знаю js =) поверьте, все что тут преподают на курсах это фуфел, даже 5% реальной разработки нет

Несколько раз забегал на форум, дабы сравнить решения и подходы. И вот что бросается в глаза: в подавляющем количестве вариантов кода, при объявлении переменных используется var, тогда как на курсе совершенно четко рекомендовали let. Погуглил различия и делаю вывод, что неосознанное использование var (особенно в функциях, в теле циклов и условий!) не соответствует принципу инкапсуляции программного кода. Конечно, на данном этапе это не влияет на тестирование решения, но зачем вырабатывать вредную привычку?