如何编写一个JavaScript函数来打印;“你好,世界”;每三次呼叫一次?

如何编写一个JavaScript函数来打印;“你好,世界”;每三次呼叫一次?,javascript,node.js,Javascript,Node.js,我们可以使用代理来实现这一点吗 您需要函数以某种方式具有状态(或使用外部变量)-例如,您可以有一个计数器,每次调用函数时递增该计数器,如果计数器模3为0,则打印文本 const fn=(()=>{ 让计数=0; return()=>{ 计数++; if(计数%3==0)console.log('Hello World'); }; })(); fn(); fn(); log('即将第三次调用'); fn()可能是这样的: var计数器=0; 函数hello(){ 计数器++; document

我们可以使用代理来实现这一点吗

您需要函数以某种方式具有状态(或使用外部变量)-例如,您可以有一个计数器,每次调用函数时递增该计数器,如果计数器模3为
0
,则打印文本

const fn=(()=>{
让计数=0;
return()=>{
计数++;
if(计数%3==0)console.log('Hello World');
};
})();
fn();
fn();
log('即将第三次调用');
fn()可能是这样的:

var计数器=0;
函数hello(){
计数器++;
document.getElementById('div_代表_计数器')。innerHTML='trust-'+计数器;
如果(计数器==3){
警报(“你好世界”);
计数器=0;
document.getElementById('div_代表_计数器')。innerHTML='counter=>0';
}
}
计数器=>0

如果您正在寻找一种没有显式状态的方法,生成器可以做一些有趣的事情:

var f = function* k(){ yield; yield; console.log("Hello World") }()

f.next();
f.next();
f.next(); // Prints "Hello World"

用最简单的术语来说,生成器是可以生成多个值并在每个yield语句之间暂停的函数,直到再次调用它们的
next
方法。您可以创建无限迭代器(如fibonacci级数)或创建流等。这只是滥用行为在函数体中暂停3次。

如上所述,您需要跟踪某些状态。另一种方法是使用
this
将其封装到函数中

函数fn(){
this.called=this.called+1 | | 1;
if(this.called%3==0)console.log('Hello World');
}
fn();
fn();
log('即将第三次调用');

fn()感谢您的贡献。理解这一点很重要,因此我们鼓励回答者对他们发布的代码以及解决问题的方法进行一些解释。作为一个新的投稿人,你可能不知道这一点,但是像这样的只有代码的答案很可能会被否决。以这样一种方式编辑你的问题,甚至不再与原来的问题有一点相似,这有点奇怪。。。
var f = function* k(){ yield; yield; console.log("Hello World") }()

f.next();
f.next();
f.next(); // Prints "Hello World"