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)