Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 状态不相关时是否需要发电机功能?_Javascript_Ecmascript 6_Eslint_Iterable - Fatal编程技术网

Javascript 状态不相关时是否需要发电机功能?

Javascript 状态不相关时是否需要发电机功能?,javascript,ecmascript-6,eslint,iterable,Javascript,Ecmascript 6,Eslint,Iterable,在下面的示例中,使用生成器函数生成唯一的ID 该代码段来自以下中篇文章: 函数*UUIDGenerator(){ 设d,r; while(true){ 产生“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxx”。替换(/[xy]/g,函数(c){ r=(new Date().getTime()+Math.random()*16)%16 | 0; d=数学楼层(d/16); 返回值(c='x'?r:(r&0x3 | 0x8)).toString(16); }); } }; 设

在下面的示例中,使用
生成器
函数生成唯一的ID

该代码段来自以下中篇文章:

函数*UUIDGenerator(){
设d,r;
while(true){
产生“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxx”。替换(/[xy]/g,函数(c){
r=(new Date().getTime()+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
}
};
设myGen=UUIDGenerator();

log(myGen.next())
我猜他们想使用GeneratorAPI,不想在空对象上编写
.next()
方法。但这是一个奇怪的实现。第一次运行时,
d
将为NaN,因为
Math.floor(未定义/16)
等于NaN。但是由于
d
没有在任何地方使用,因此该错误不会抛出任何东西。所以我的第二个想法是,在过去,
d
被用于计算下一个UUID,因此,生成器是有意义的。正如你从评论中注意到的,这只是一篇糟糕的文章。请在每篇文章中问一个问题。我不明白你的第二个问题。当您想要迭代iterable时,它是必需的,比如在
for…of
循环中。如果您不想迭代它,它不需要是可迭代的。这与迭代是否有状态无关(你的第一个问题),尽管无状态迭代要么是空的,要么是无限的。此外,我建议你去其他地方学习这些东西,例如。*@Keith我已经阅读了MDN和其他一些来源,因此,正确地掌握
iterable/iterator协议
generator
概念。我只是不明白为什么他会在显示的代码片段中使用
生成器。我看到
r
d
状态在迭代过程中都被保存,但是
r
s之前的值根本没有被使用,我不确定保存
d
s状态的意义是什么。