Javascript:了解函数语法和参数

Javascript: Understanding function syntax and parameters

我正在尝试理解 bootstrap-multiselectonchange 事件。特别是,我试图了解函数语法和参数。

$('#example-onChange').multiselect({
     onChange: function(option, checked, select) {
            alert('Changed option ' + $(option).val() + '.');
           }
});

如何知道函数中的三个参数是什么意思?我从哪里得到这三个参数?我也尝试查看代码 https://github.com/davidstutz/bootstrap-multiselect/blob/master/dist/js/bootstrap-multiselect.js#L263 但无法理解它。

我知道使用提醒,在这个函数中选项指的是所选选项,checked 显示选项是 checked 还是 unchecked。在函数内部执行 console.log(select) 时,我一直得到 undefined,所以不确定那是什么意思。

问题: 如何理解函数参数和语法?这只是一个示例,但了解通用过程将有助于我将来解码其他类似功能。

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


一般来说,在文档不是很精确的情况下,我经常应用的技术是 console.logarguments,然后检查它们各自的样子。

在这种情况下,做的时候:

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

...我得到以下输出:

...从这里你可以看到提供了两个参数。第一个是单击的选项的 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);

... none 其中提供了第三个参数。我在这里说 至少 3 次,因为有时(尤其是在大型图书馆中)很难找到所有调用站点,因为开发人员可以用各种奇怪而奇妙的方式掩盖它们


您可以使用的其他技巧:

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

  2. 在各自的 GitHub 项目上打开一个问题。您会发现很多图书馆所有者都非常乐意提供帮助。

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

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

为了快速理解,结合经验,有一些思维机制可以借鉴。例如,事件委托的参数提供有关事件发生的元素的信息。 好像这些参数是返回给你的值。

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

示例 1:

onClose:function(success)
{
    //TODO
}

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

示例 2:

保存后:函数(成功,文件名) {

}

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

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