JavaScript - ссылка на аргументы из функции - PullRequest
0 голосов
/ 04 августа 2011

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

Есть ли какая-либо польза от этой практики?

Например:

function populateResultCount(count){
    var count = count;
    return $('.resultCounter').text(count);     
};

Можно легко переписать так:

function populateResultCount(count){
    return $('.resultCounter').text(count);     
};

И все равно будет работать правильно.

Ответы [ 5 ]

3 голосов
/ 04 августа 2011

Нет никакой функциональной разницы между ними. Перейти с более простой версией.

1 голос
/ 04 августа 2011
function Test (count) {
    this.increment = function() {
        count++;
    }

    this.getCount = function() {
        return count;
    }
}

var test = new Test(10);


<button onclick="test.increment(); alert(test.getCount());">Increment</button>

Вы можете сделать что-то подобное даже с аргументом.Поэтому я думаю, что они одинаковы.

1 голос
/ 04 августа 2011

Все остальные ответы верны: нет никакой причины «переназначать» переданный аргумент внутри функции.

Единственное, о чем я могу подумать, когда вы будете возиться с переназначением аргументов, это если у вас есть необязательные аргументы / значения по умолчанию

function xyz(optionalArgument) {
    optionalArgument = optionalArgument || "no argument given";
    ...
}

Но в этом случае было бы лучше написать это как

function xyz( /* optionalArgument */ ) {
    var optionalArgument = arguments[0] || "no argument given";
    ...
}

Обратите внимание, что трюк || даст вам значение правой части, если левая часть является ложным значением. То есть если вы согласны с тем, что необязательный аргумент является ложным (например, явно передается null, 0 и т. д.), вам придется сделать что-то вроде var arg = typeof arguments[x] === 'undefined' ? defaultValue : arguments[x];

1 голос
/ 04 августа 2011

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

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

1 голос
/ 04 августа 2011

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

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