我似乎无法在'Net ...
的任何地方找到答案将函数参数重新声明为局部变量是否有任何原因,优点或缺点?
示例:
function(param1, param2) {
var param1, param2;
...etc...
}
对我来说似乎非常多余,但也许我错过了什么......?
谢谢,
布赖恩
答案 0 :(得分:4)
如果声明的变量的名称与作为函数参数的名称相同,那么它绝对没有任何作用。 完全没有价值。甚至不会改变变量的值。
答案 1 :(得分:2)
没有充分理由重新声明与参数同名的局部变量。大多数语言不允许这样做,但JavaScript允许几乎所有内容。
答案 2 :(得分:1)
当用户没有在函数调用上传递任何东西时,它会很有用。
例如
function X(param1, param2){
param1 = param1 || 1; //set default values if param1 is nothing
param2 = param2 || {};
}
但是在你的例子中,你已经覆盖了函数的参数,所以它就像
function X(){
var param1, param2;
...
}
答案 3 :(得分:0)
通常这是不必要的,但在某些情况下它可能很有用。
几个例子:
如果您修改了函数中这些变量的值,但需要知道函数后面的原始值是什么,那么您最好先预先复制。
有时在声明中有一个非常具有描述性的名称很方便,例如first_integer_in_product_list
,但在函数内部编写代码时,宁愿只使用i
。
答案 4 :(得分:0)
它不会伤害任何东西,除非你需要像S的回答那样做一些事情。马克应该避免。它可能导致代码不太可读,如果你不注意变量范围,或者如果你忘记了它可以用于意大利面条仓库的名称。
答案 5 :(得分:0)
你应该在帖子中提到你正在谈论的语言,如果它们具有相同的名称,大多数情况下会出错。我认为能够以某种语言这样做的最可能的原因是改变其范围,例如使其持续时间静止而不是在函数完成时立即销毁。