for循环和变量范围

时间:2013-06-13 02:35:38

标签: javascript for-loop

我正试图找出做某事的最佳方法。 我有一个充当HTML模板的变量,并从对象数组中插入属性。简单的代码如下:

i = 0;
v =  "<li>",
v += array[i].prop,
v += "</li>";

对象数组:

array = new Array();
array[0] = { name: "1",
             prop: "Property 1"
           }
array[1] = { name: "2",
             prop: "Property 2"
           }

这有点让我:

for (; i < array.length ;) {
    i += 1;
    console.log(i);
    $("body").append(v);
}

我在控制台中返回0和1,但是prop值两次返回“Property 1”。 据我所知,由于我没有在for循环中声明i,它应该将i的新值返回到最初声明的变量。这显然是我缺少/不理解的范围问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

v未在循环内重新分配。您多次追加相同的值。

答案 1 :(得分:1)

不完全确定您的问题是什么,但就“做某事的最佳方式”而言,我会去:

var array = [
        {
            name: "1",
            prop: "Property 1"
        },
        {
            name: "2",
            prop: "Property 2"
        }   
    ],
    i = 0,
    v;
for (; i < array.length; i++) {
    v = '<li>' + array[i].prop + '</li>';
    $("body").append(v);
}