我在Javascript中定义了一些变量:
var aaa = "aaa";
var bbb = "bbb";
var ccc = "ccc";
但是我的朋友说将它们定义为:
应该更好var aaa = "aaa",
bbb = "bbb",
ccc = "ccc";
因为JsLint会报告我的代码错误。
我不知道为什么我们应该把它作为第二个,因为我发现我的版本更好地查看值是否非常大,如:
var aaa = {
some1 : 111,
some2 : 222
};
var bbb = {
some1 : 111,
some2 : 222
};
答案 0 :(得分:5)
在JavaScript中没有块范围,只有功能级别范围。因此,如果您使用多个var
语句,那么来自其他语言的开发人员可能感觉不到差异。例如,
var numbers = [];
for (var i = 0; i < 10; i += 1) {
numbers.push(i);
}
如果您熟悉C,C ++或JAVA,您可能会认为i
循环之外的for
不可用。但这是因为第一行中提到的原因。
因此,为避免混淆,JSLint鼓励您每个函数只使用一个var
语句,这也应该是该函数的第一行。
在许多语言中,块引入了范围。块中引入的变量在块外部不可见。
在JavaScript中,块不会引入范围。只有功能范围。函数中任何位置引入的变量在函数中的任何位置都可见。 JavaScript的块会让有经验的程序员感到困惑并导致错误,因为熟悉的语法会产生错误的承诺。
JSLint期望包含
function
,if
,switch
,while
,for
,do
和try
语句的数据块而在其他任何地方。在具有块范围的语言中,通常建议在首次使用的站点声明变量。但是因为JavaScript没有块范围,所以在函数顶部声明所有函数的变量是明智的。建议每个函数使用一个var语句。这可以使用
vars
选项拒绝。