Javascript 对两个不同序列使用单个生成器
我很难理解为什么我的代码不能正确执行,我使用一个生成器生成两个不同的序列Javascript 对两个不同序列使用单个生成器,javascript,Javascript,我很难理解为什么我的代码不能正确执行,我使用一个生成器生成两个不同的序列 function lerp(a, b, perc) { return a + (b - a) * perc; }; function check_lerp(a, b) { if(Math.abs(a - b) > 0.3) return true; return false; }; //lerp generator, given a start and end angle generate
function lerp(a, b, perc) {
return a + (b - a) * perc;
};
function check_lerp(a, b) {
if(Math.abs(a - b) > 0.3) return true;
return false;
};
//lerp generator, given a start and end angle generates angles for back-and forth motion.
//start -> end and then end -> start again.
function *lgen(start, end, perc) {
let back = false;
s = start;
e = end;
while(1) {
if(check_lerp(s, e)){
s = lerp(s, e, perc);
yield s;
}
else if(!back) {
back = true;
s = end;
e = start;
}
else break;
}
}
var first = lgen(0, 10, 0.1);
var second = lgen(100, 200, 0.1);
console.log(first.next().value);
console.log(second.next().value);
console.log(first.next().value); //should be between 0 and 10 but is 119 (resumes second.next() val.)
知道发生了什么吗?提前感谢。只需使用局部变量即可。未声明的变量是全局变量
功能lerp(a、b、perc){
返回a+(b-a)*perc;
};
功能检查程序(a、b){
if(Math.abs(a-b)>0.3)返回true;
返回false;
};
//lerp生成器,给定开始和结束角度,生成来回运动的角度。
//开始->结束,然后结束->再次开始。
功能*lgen(开始、结束、perc){
放回去=假,
s=start,//声明并初始化
e=end;//声明并初始化
而(1){
如有(请勾选){
s=lerp(s、e、perc);
产量;
}否则如果(!返回){
返回=真;
s=结束;
e=启动;
}否则就断了;
}
}
var first=lgen(0,10,0.1);
var second=lgen(100200,0.1);
console.log(first.next().value);
console.log(second.next().value);
console.log(first.next().value)//应介于0和10之间,但为119(恢复秒。下一个()val.)