Javascript:了解函数语法和参数
Javascript: Understanding function syntax and parameters
我正在尝试理解 bootstrap-multiselect
的 onchange
事件。特别是,我试图了解函数语法和参数。
$('#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.log
和 arguments
,然后检查它们各自的样子。
在这种情况下,做的时候:
$('#example-onChange').multiselect({
onChange: function(option, checked, select) {
console.log(arguments);
}
});
...我得到以下输出:
...从这里你可以看到提供了两个参数。第一个是单击的选项的 jQuery 对象。第二个(您可以假设)是关于是否选择该选项的布尔值。
您还可以看到没有提供 select
(第三个参数)。
您可以采取的另一种方法是像您一样搜索源代码;但我建议找到函数被调用的位置,而不是它被定义的位置。通过在the source code中搜索onChange
,可以看到onChange
至少被调用了3次。
this.options.onChange($option, checked);
this.options.onChange($option, true);
this.options.onChange($option, false);
... none 其中提供了第三个参数。我在这里说 至少 3 次,因为有时(尤其是在大型图书馆中)很难找到所有调用站点,因为开发人员可以用各种奇怪而奇妙的方式掩盖它们
您可以使用的其他技巧:
在处理函数中设置断点(使用开发工具的 "breakpoint" 功能,或通过 debugger
语句),触发处理程序,然后跟随调用堆栈(再次使用开发人员工具)来检查调用站点,并查看提供了哪些变量。
在各自的 GitHub 项目上打开一个问题。您会发现很多图书馆所有者都非常乐意提供帮助。
不幸的是,所有 Javascript 库都必须有非常强大的文档。
此外,Javascript是一种动态类型语言,因此没有关于形式参数所需类型的信息。如果没有好的文档,它会使库更难理解。
为了快速理解,结合经验,有一些思维机制可以借鉴。例如,事件委托的参数提供有关事件发生的元素的信息。 好像这些参数是返回给你的值。
在您的示例中,option、checked 和 select 可能与 #example-onChange 中定义的 multiselect 中的选项元素有关,该元素已更改 (onChange)。
示例 1:
onClose:function(success)
{
//TODO
}
在这种情况下,"success" 应该表示:如果成功关闭我的元素,则此参数为真,否则 "success" 为假。
示例 2:
保存后:函数(成功,文件名)
{
}
在这种情况下,"filename" 应该是执行保存操作后保存的元素的文件名。
我尽力写出正确的英文,我希望它是可以理解的。
我正在尝试理解 bootstrap-multiselect
的 onchange
事件。特别是,我试图了解函数语法和参数。
$('#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.log
和 arguments
,然后检查它们各自的样子。
在这种情况下,做的时候:
$('#example-onChange').multiselect({
onChange: function(option, checked, select) {
console.log(arguments);
}
});
...我得到以下输出:
...从这里你可以看到提供了两个参数。第一个是单击的选项的 jQuery 对象。第二个(您可以假设)是关于是否选择该选项的布尔值。
您还可以看到没有提供 select
(第三个参数)。
您可以采取的另一种方法是像您一样搜索源代码;但我建议找到函数被调用的位置,而不是它被定义的位置。通过在the source code中搜索onChange
,可以看到onChange
至少被调用了3次。
this.options.onChange($option, checked);
this.options.onChange($option, true);
this.options.onChange($option, false);
... none 其中提供了第三个参数。我在这里说 至少 3 次,因为有时(尤其是在大型图书馆中)很难找到所有调用站点,因为开发人员可以用各种奇怪而奇妙的方式掩盖它们
您可以使用的其他技巧:
在处理函数中设置断点(使用开发工具的 "breakpoint" 功能,或通过
debugger
语句),触发处理程序,然后跟随调用堆栈(再次使用开发人员工具)来检查调用站点,并查看提供了哪些变量。在各自的 GitHub 项目上打开一个问题。您会发现很多图书馆所有者都非常乐意提供帮助。
不幸的是,所有 Javascript 库都必须有非常强大的文档。
此外,Javascript是一种动态类型语言,因此没有关于形式参数所需类型的信息。如果没有好的文档,它会使库更难理解。
为了快速理解,结合经验,有一些思维机制可以借鉴。例如,事件委托的参数提供有关事件发生的元素的信息。 好像这些参数是返回给你的值。
在您的示例中,option、checked 和 select 可能与 #example-onChange 中定义的 multiselect 中的选项元素有关,该元素已更改 (onChange)。
示例 1:
onClose:function(success)
{
//TODO
}
在这种情况下,"success" 应该表示:如果成功关闭我的元素,则此参数为真,否则 "success" 为假。
示例 2:
保存后:函数(成功,文件名) {
}
在这种情况下,"filename" 应该是执行保存操作后保存的元素的文件名。
我尽力写出正确的英文,我希望它是可以理解的。