在 for
/in
循环中声明循环特定变量的正确语法是什么?
前两个似乎都有效(并且不会在 Google Closure 编译器中引发任何标志),但只有第三个通过了 Crockford 的 JS Lint。我不太愿意使用它,主要是因为它不紧凑。
JSLint 提示 val
是一个错误的变量(当我不添加 var
时),或者应该移动声明。
第一种或第二种选择有什么缺点吗?我应该使用什么? (示例假设 str
是声明的字符串,vals
是声明的对象)
1。无声明:
for(val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}
2。在“for”变量声明中:
for(var val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}
3。在循环 var 声明之外:
var val;
for(val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}
最佳答案
请随意忽略 JSLint。这比什么都重要。第二个和第三个在功能上是相同的,随意使用(我使用第二个)。第一个公开一个全局“val”变量,所以不要这样做:)
仅供引用,第 3 个背后的原因是内联变量声明比以下内容更难发现/找到:
var a, b, c, d, e;
在函数的顶部。
关于javascript - 适当的 for/in 变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464369/