我有一个像这样的功能
function foo(x){
if (typeof x === 'undefined'){
var x = 123;
}
}
是必要的var
声明吗? JSlint抱怨variable x hides argument
(可能是b / c我在if语句的范围内定义了一个变量。
答案 0 :(得分:4)
此处不需要var
,这实际上非常具有误导性。 var
修饰符用于将值范围限定为当前函数范围。因此,它在方法的顶部最有用,或者在第一次使用该值时最有用。参数总是作用于当前函数,因此它没有值。
将其用于后续用法建议它是该值的第一次使用/声明。这可能会误导未来的开发人员。
答案 1 :(得分:4)
var
不是必需的,事实上这是一个错误。您应该使用var
来声明一个新变量。一旦函数有一个参数x
,就会声明它 - 是否传递一个值。
顺便说一句,在这种情况下,如果您知道变量已声明但只是不知道是否已为其赋值,则可以使用x === undefined
和字符串来编写typeof
比较没有必要。