Перераспределение параметров функции как переменных? - PullRequest
3 голосов
/ 22 января 2010

Я не могу найти ответ на этот вопрос в любом месте в сети ...

Есть ли какая-либо причина, преимущество или недостаток для пересчета параметров функции в качестве локальных переменных?

Пример:

function(param1, param2) {
  var param1, param2;
  ...etc...
}

Мне кажется, что это излишне, но, может быть, я что-то упускаю ...?

Спасибо,

Брайан

Ответы [ 6 ]

4 голосов
/ 22 января 2010

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

2 голосов
/ 22 января 2010

Нет веской причины когда-либо повторно объявлять локальную переменную с тем же именем, что и у параметра. Большинство языков не позволяют этого, но JavaScript допускает практически все.

1 голос
/ 22 января 2010

Это будет полезно, когда пользователь ничего не передавал при вызове функций.

например

function X(param1, param2){
   param1 = param1 || 1; //set default values if param1 is nothing
   param2 = param2 || {};
}

но в вашем примере у вас есть перезаписанные параметры функции, так что это будет так же, как

function X(){
  var param1, param2;
  ...
}
0 голосов
/ 22 января 2010

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

0 голосов
/ 22 января 2010

Это ничего не ранит, и если вам не нужно что-то делать со стены, как ответ С. Марк, этого следует избегать. Это может привести к снижению читабельности кода, и если вы не обращаете внимания на переменные области или теряете имена, это может быть сделано для хранилища спагетти.

0 голосов
/ 22 января 2010

Часто в этом нет необходимости, но в некоторых случаях это может быть полезно.

Несколько примеров:

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

Иногда бывает удобно иметь в описании очень описательное имя, например first_integer_in_product_list, но будетлучше работать с i при написании кода внутри функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...