我刚接触JavaScript并来自不同的编程背景,我很难理解如何JavaScript解析传递给函数的参数。
让我们看一个简单的例子。从jQuery 的文档中.on,我看到了 2 个不同的签名:
.on( 事件 [, 选择器 ] [, 数据 ], 处理程序 )
.on( 事件 [, 选择器 ] [, 数据 ] )
但是,以下代码段会生成完全有效的代码并执行预期的操作:
$(function() {
let dat = {a: 1, b: 2}
$('#do').on('click', dat, function(evt) {
alert(evt.data.b);
});
$('#do2').on('click', function(evt) {
alert("click");
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="do">
Click!
</button>
<button id="do2">
Click!
</button>
如何JavaScript“知道”dat在第一种情况下是数据(而不是selector)?显然两个签名都没有位置匹配?那么它在内部是如何工作的,我如何将这种模式用于我自己的功能呢?
qq_花开花谢_0
一只名叫tom的猫
相关分类