JavaScript对象奇怪的行为

时间:2013-06-11 09:08:14

标签: javascript jquery datepicker

请原谅我一个非常标准的问题,一切正常,但仍然很奇怪 在网页上,我使用了来自here的日期选择器 这是部分代码:
HTML:

<div id="datepicker-calendar"></div>

DatePicker插入功能:

function insert_datepicker(mode)
{
    $('#datepicker-calendar').empty();  
    ...
    $('#datepicker-calendar').DatePicker({
        ...
        onChange    : function(date,el) {  
            if (mode == 1){
                doSmth1();
            }
            if (mode == 2){
                doSmth2();
            }
        }  
    });
    ...
}

'mode'不是全局变量,在控制台中显示为'undefined' 当我调用“insert_datepicker(2)”时,onChange工作正常,但触发事件时不应该出错?
该功能如何“记住”该笔记?

2 个答案:

答案 0 :(得分:1)

由于closure naturejavascript,它允许内部函数访问外部作用域中声明的变量。

在你的情况下,mode变量在insert_datepicker函数内声明,你有onChange的匿名内部函数,这里内部函数可以访问{{1}内声明的变量1}}作为闭包变量。

答案 1 :(得分:0)

致电mode时会提供

insert_datepicker()。在您的情况下mode,在调用insert_datepicker(2)时实际上是2。以这种方式附加的所有日期选择工具都会在调用mode时将mode绑定到insert_datepickers

如果您未传递mode,则会undefined。将其与12进行比较将产生false,并且不会执行语句的块。

相关问题