当变量已经是参数(Javascript)时应该使用var

时间:2011-10-28 19:46:31

标签: javascript jslint

我有一个像这样的功能

function foo(x){
    if (typeof x === 'undefined'){
        var x = 123;
    }
}

是必要的var声明吗? JSlint抱怨variable x hides argument(可能是b / c我在if语句的范围内定义了一个变量。

2 个答案:

答案 0 :(得分:4)

此处不需要var,这实际上非常具有误导性。 var修饰符用于将值范围限定为当前函数范围。因此,它在方法的顶部最有用,或者在第一次使用该值时最有用。参数总是作用于当前函数,因此它没有值。

将其用于后续用法建议它是该值的第一次使用/声明。这可能会误导未来的开发人员。

答案 1 :(得分:4)

var不是必需的,事实上这是一个错误。您应该使用var来声明一个新变量。一旦函数有一个参数x,就会声明它 - 是否传递一个值。

顺便说一句,在这种情况下,如果您知道变量已声明但只是不知道是否已为其赋值,则可以使用x === undefined和字符串来编写typeof比较没有必要。