Javascript:了解函数语法和参数

时间:2015-06-29 09:31:53

标签: javascript jquery bootstrap-multiselect

我想了解onchange的{​​{1}}事件。特别是,我试图理解函数语法和参数。

bootstrap-multiselect

如何知道函数中的三个参数是什么意思?我在哪里可以得到这三个参数?我也尝试查看代码https://github.com/davidstutz/bootstrap-multiselect/blob/master/dist/js/bootstrap-multiselect.js#L263,但对它没有多大意义。

我知道使用警告,在此功能选项中引用所选选项,$('#example-onChange').multiselect({ onChange: function(option, checked, select) { alert('Changed option ' + $(option).val() + '.'); } }); 显示该选项是checked还是checked。在函数内部执行unchecked时,我不断获得undefined,因此不确定这是什么意思。

问题 :如何理解这些函数参数和语法?这只是一个例子,但知道一般程序将帮助我将来解码其他类似的功能。

2 个答案:

答案 0 :(得分:3)

简而言之,图书馆似乎并没有提供select选项。

一般情况下,在文档不是非常精确的情况下,我经常应用的技术是console.log arguments,然后检查每个文档的外观。

在这种情况下,做:

$('#example-onChange').multiselect({
    onChange: function(option, checked, select) {
        console.log(arguments);
    }
});

...我得到了以下输出:

enter image description here

...从这里你可以看到提供了两个参数。第一个是被单击的选项的jQuery对象。第二个(你可以假设)是一个关于选择是否被选中的布尔值。

您还可以看到没有提供select(第三个参数)。

您可以采取的另一种方法是搜索源代码,就像您一样;但是我建议找到函数的名称,而不是定义它的位置。通过在the source code中搜索onChange,您可以看到onChange被调用至少3次。

  1. this.options.onChange($option, checked);
  2. this.options.onChange($option, true);
  3. this.options.onChange($option, false);
  4. ......其中没有一个提供第三个参数。我在这里说至少3次,因为有时(特别是在大型图书馆中)找到所有的调用网站很困难,因为开发人员可以用各种奇怪和奇妙的方式掩盖它们

    您可以使用的其他技巧:

    1. 在处理函数中设置断点(使用"断点"开发工具的功能,或通过debugger语句),触发处理程序,然后执行callstack(再次,使用开发人员工具)检查调用站点,并查看提供的变量。

    2. 在相应的GitHub项目上打开一个问题。您会发现很多图书馆老板都非常乐意为您提供帮助。

答案 1 :(得分:1)

不幸的是,所有Javascript库都必须具有非常强大的文档。

此外,Javascript是一种动态类型语言,因此没有关于形式参数所需类型的信息。如果没有良好的文档,它会使库更难理解。

为了快速理解,有经验,有一些可以使用的思考机制。例如,事件委托的参数提供了发生它的元素的信息。 就像这些参数是返回给您的值。

在您的示例中,有可能选项,checked和select与#example-onChange中定义的多选项中的选项元素有关,该选项已更改(onChange)。

示例1:

onClose:function(success)
{
    //TODO
}

在这种情况下,“success”应该表示:如果关闭我的元素成功,则此参数为true,否则“success”为false。

示例2:

afterSave:function(success,filename) {

}

在这种情况下,执行save的操作后,“filename”应该是已保存元素的文件名。

我尽力写出正确的英语,我希望这是可以理解的。