Javascript jquery插件内部的递归调用
为什么函数在下面的代码中只工作一次Javascript jquery插件内部的递归调用,javascript,jquery,plugins,Javascript,Jquery,Plugins,为什么函数在下面的代码中只工作一次 (function ( $ ) { $.fn.test = function() { setInterval(hi.call(this), 1000); function hi(){ console.log(this); } }; }( jQuery )); $('div').test(); call()使用this值和可选参数调用函数,与 setInterval(hi(), 1000); var x = hi();
(function ( $ ) {
$.fn.test = function() {
setInterval(hi.call(this), 1000);
function hi(){
console.log(this);
}
};
}( jQuery ));
$('div').test();
call()
使用this值和可选参数调用函数,与
setInterval(hi(), 1000);
var x = hi(); // undefined
setInterval(x, 1000);
// ^ still undefined
由于该函数不返回任何内容,因此与
setInterval(hi(), 1000);
var x = hi(); // undefined
setInterval(x, 1000);
// ^ still undefined
您想要的是使用bind()
使用jQuery的时候稍微多一点
call()
使用this值和可选参数调用函数,与
setInterval(hi(), 1000);
var x = hi(); // undefined
setInterval(x, 1000);
// ^ still undefined
由于该函数不返回任何内容,因此与
setInterval(hi(), 1000);
var x = hi(); // undefined
setInterval(x, 1000);
// ^ still undefined
您想要的是使用bind()
使用jQuery的时候稍微多一点
为什么不呢,它只被调用了一次?@adeneo我试图使用调用它时使用的
setInterval
递归调用它,然后将函数的返回值(undefined
)传递给setInterval
,因为您使用call
,而函数什么也不返回。这里绝对没有递归。您正在将undefined
传递到该间隔?setInterval(hi.bind(this),1000)
为什么不调用它,它只被调用一次?@adeneo我试图使用调用它时使用的setInterval
递归调用它,然后将函数的返回值(undefined
)传递给setInterval
,因为您使用call
,函数不返回任何内容。这里绝对没有递归。您正在将undefined
传递到该间隔?setInterval(hi.bind(this),1000)代码>