JavaScript - 引用函数内的参数

时间:2011-08-04 13:16:37

标签: javascript function functional-programming

最近我发现自己将函数参数附加到函数作用域内的变量中,这样我每次使用时都不会引用该参数。

这种做法有什么好处吗?

例如:

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

可以像这样轻松地重写:

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

并且仍能正常运作。

5 个答案:

答案 0 :(得分:3)

两者之间没有功能差异。选择更简单的版本。

答案 1 :(得分:1)

除非你以某种方式操纵数据,否则我看不到任何好处。没有附加辅助的变量仍然无法在函数外部访问。

答案 2 :(得分:1)

如果您没有使用传入的参数,则没有区别。在您的第一个示例中,由于var count = count,您可能会混淆未来的维护者,即您声明一个与参数同名的变量,这不是最佳做法。

所以,如果可以,请使用您的第二张表格。它的意图更清晰,没有混淆的余地。

答案 3 :(得分:1)

所有其他答案都是正确的:没有理由在函数内“重新分配”传递的参数。

我能想到的唯一一件事就是,如果你有可选的参数/默认值

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

但在这种情况下,最好将其写成

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

请注意,如果左侧是假值,||技巧将为您提供右侧的值。即如果你对可选参数是假的(比如显式传递null0等),你就必须做var arg = typeof arguments[x] === 'undefined' ? defaultValue : arguments[x];

之类的事情。

答案 4 :(得分:1)

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>

即使使用参数,你也可以做类似的事情。所以我认为它们是一样的。