在javascript中,我可以在不同的for循环中声明同一个变量两次吗?

Can I declare the same variable twice in different for loops in JavaScript?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
JavaScript Variable Scope

我有一个HTML选择选项的javascript函数,可以使用几天:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Show and hide days according to the selected year and month.
function show_and_hide_days(fp_form) {
    var select_year= $(fp_form).find("select.value_year");
    var select_month= $(fp_form).find("select.value_month");
    var select_day= $(fp_form).find("select.value_day");
    var selected_year= $.parse_int($(select_year).val());
    var selected_month= $.parse_int($(select_month).val());
    var selected_day= $.parse_int($(select_day).val());
    var days_in_month= new Date(selected_year, selected_month, 0).getDate();
    // If the number of days in the selected month is less than 28, change it to 31.
    if (!(days_in_month >= 28))
    {
        days_in_month= 31;
    }
    // If the selected day is bigger than the number of days in the selected month, reduce it to the last day in this month.
    if (selected_day > days_in_month)
    {
        selected_day= days_in_month;
    }
    // Remove days 29 to 31, then append days 29 to days_in_month.
    for (var day= 31; day >= 29; day--)
    {
        $(select_day).find("option[value='" + day +"']").remove();
    }
    for (var day= 29; day <= days_in_month; day++)
    {
        $(select_day).append("<option value="" + day +"">" + day +"</option>");
    }
    // Restore the selected day.
    $(select_day).val(selected_day);
}

我的问题是-我可以在两个不同的for循环中声明"var day"两次吗?这个变量的范围是什么?它合法吗?如果我在同一个函数中声明同一个变量两次,会发生什么?(内环还是外环)?例如,如果我用"var"再次声明一个变量,会发生什么?

如果在变量日之前我根本不使用"var"作为循环,会发生什么?

谢谢,URI。

p.s.$parse_int是一个jquery插件,如果没有指定,它将使用基数10调用parse int。


(P)任何在一个函数中使用字母名称0的地方都会使用字母名称1。It doesn't matter where in the function this takes place as EDOCX1(p)(P)在同一功能中,同源的英文字母名称是有系统的法律要求,但这些要求不会因变量的作用而被接受。(p)(P)由于这一点没有实效,所以有一所学校认为,对这一点的建议(和在一个单一的EDOCX1的英文本2中的一种功能在一个功能的最上面表现出所有的范围)是为了避免暗示存在着对这一功能的重要意义(对于那些不具备与Javascript的这种特性相适应的能力的维护者)。JSLint will warn you to this usage.(p)


(P)不,你不应该。Javascript has function scope,no t block scope!(p)(P)I'm saying should n't because i t might suggest that the variable is local to the loop/block when i t is n't.(p)