FF 68.0.1中的GM脚本中的以下代码:
let input = $( 'input#id' );
input.each( function(){console.debug(this)} );
input.each( debugn(this) );
function debugn( message ) {
console.debug(message)
}
先打印:
<input id="id" ...>
符合预期,但随后:
Sandbox { browser: {...
即使内部迭代器在第一次调用时被使用,而在第二次调用时未初始化(尽管.each()并未提及这种行为),它也不应该打印Sandbox
对象,但根本不会打印打debugn(...)
,不是吗?
答案 0 :(得分:2)
并不是每次都调用.each方法两次,而是每次调用它的方式。
第一次调用匿名函数时,该匿名函数又调用console.debug方法并将其作为参数传递。
第二次,您将debugn函数作为参数传递给每个函数,每个函数依次调用console.debug方法,但是此方法的上下文已更改,因为您直接将函数作为每个函数的参数传递了进来。
简短的回答:您首先要做的就是Jquery希望您做的方式。如果您有要调用的命名函数,只需在匿名函数中调用它,就像您第一次使用
if(x===true)