在NodeJS模块中创建一个全局计数器

问题描述:

我正在尝试为我的React组件创建唯一的ID。我创造了这个模块:在NodeJS模块中创建一个全局计数器

var _uid = 0; 

function getUid(): { 
    ++_uid; 
    return `_uid_${_uid}`; 
} 

export default getUid; 

希望的_uid将每个模块函数调用时增加,但它始终是1.如何实现每个需要的模块时上涨了吗?

+0

'VAR _uid:数量= 0;'是不是正规的JavaScript。你是否指我使用其他语言? – jfriend00

+0

@ jfriend00它是Flow,但它编译为JavaScript。对不起,我忘了那里的类型注释! – Victor

+0

然后请用适当的语言标记它。 – jfriend00

Java脚本的关闭可以帮助您有:

var getUid = (function(){ 
     var _uid: number = 0; 
     return function(){ 
     ++_uid; 
     return `_uid_${_uid}`; 
     } 
    })(); 

export default getUid; 
+1

你能解释一下吗?我的意思是为什么这个工作? – Victor

+0

这里_uid只发一次,因为它在匿名函数中,我调用它一次,它将内部函数返回给getUid,因此在此之后,当您需要getUid时,它只会增加现有值 –

+0

不清楚这是如何做不同的事情比OP的原始代码。 – jfriend00