javascript - 适当的 for/in 变量声明

标签 javascript syntax for-in-loop

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/

相关文章:

javascript数组比较循环多次

arrays - `${1#*=}` 在 Bash 中意味着什么?

haskell - 这个 Haskell 定义是什么意思?

javascript - 将 Node.js 应用程序部署到 heroku 时出现 Async.times 错误(重复循环)

javascript - 在对象内部使用 for-in 循环来访问其成员

Python迭代器问题

javascript - 如何从外部 .js 文件加载屏幕?

javascript - 直接从microstrategy获取导出的PDF文档

javascript - 递归方式层次树的构建逻辑

python - 字符串在 `eval` 语句中被视为变量