最近我发现自己将函数参数附加到函数作用域内的变量中,这样我每次使用时都不会引用该参数。
这种做法有什么好处吗?
例如:
function populateResultCount(count){
var count = count;
return $('.resultCounter').text(count);
};
可以像这样轻松地重写:
function populateResultCount(count){
return $('.resultCounter').text(count);
};
并且仍能正常运作。
答案 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";
...
}
请注意,如果左侧是假值,||
技巧将为您提供右侧的值。即如果你对可选参数是假的(比如显式传递null
,0
等),你就必须做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>
即使使用参数,你也可以做类似的事情。所以我认为它们是一样的。