JavaScript对象奇怪的行为
请原谅我提出一个非标准问题,一切正常,但仍然很奇怪JavaScript对象奇怪的行为,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,请原谅我提出一个非标准问题,一切正常,但仍然很奇怪 在网页上,我使用来自的日期选择器 以下是部分代码: HTML: “mode”不是全局变量,在控制台中显示为“undefined”。 当我调用“insert_datepicker(2)”时,onChange工作正常,但触发事件时不应该出现错误吗? 函数如何“记住”便笺?模式在调用insert\u datepicker()时提供模式在您的情况下,调用插入日期选择器(2)实际上是2。所有以这种方式连接的日期选择器都将其模式绑定到调用insert\u日
在网页上,我使用来自
的日期选择器 以下是部分代码:
HTML: “mode”不是全局变量,在控制台中显示为“undefined”。
当我调用“insert_datepicker(2)”时,onChange工作正常,但触发事件时不应该出现错误吗?
函数如何“记住”便笺?
模式
在调用insert\u datepicker()
时提供<代码>模式在您的情况下,调用插入日期选择器(2)
实际上是2
。所有以这种方式连接的日期选择器都将其模式
绑定到调用insert\u日期选择器时传入的模式
当您未在模式下通过时,它将是未定义的
。将其与1
和2
进行比较将产生false
,并且不会执行语句块。这是因为,它允许内部函数访问外部范围中声明的变量
在您的情况下,mode
变量在insert\u datepicker
函数中声明,并且您有一个用于onChange
的匿名内部函数,在这里,内部函数可以访问insert\u datepicker
中声明为闭包变量的变量。为什么会有错误?这是一个JavaScript闭包。看见
<div id="datepicker-calendar"></div>
function insert_datepicker(mode)
{
$('#datepicker-calendar').empty();
...
$('#datepicker-calendar').DatePicker({
...
onChange : function(date,el) {
if (mode == 1){
doSmth1();
}
if (mode == 2){
doSmth2();
}
}
});
...
}