#javascript
#javascript
Вопрос:
Допустим, у меня есть функция:
function hi(message) {
return message;
}
И у меня есть функция внутри этой функции:
function hi(message) {
function say(message) {
return message;
}
say("hello");
}
hi("sup");
Не мешают ли аргументы друг другу, если они совпадают?
Ответ №1:
Внутренние аргументы функции будут скрывать внешние.
Ошибок не будет.
Комментарии:
1. Ну, ошибок не будет, пока затенение кого-нибудь не смутит, конечно
![]()
Ответ №2:
Нет.
// let this be message #1
function hi(message) {
//Inside this scope we have message === #1
// let this be message #2
function say(message) {
// inside this scope we have message === #2
return message;
}
say("hello");
}
hi("sup");
Это будет работать так, как ожидалось.
С точки зрения удобства чтения / сопровождения я думаю, что повторно использовать имена параметров / переменных плохо.
У вас также есть проблема с тем, что во внутренней функции ваша #2
переменная является затеняющей переменной #1
Это означает, что к ней невозможно получить доступ #1
внутри say