在对象上使用自定义的Symbol.iterator方法会造成死循环?产生死循环的原因是什么? var randoms = { [Symbol.iterator]: function (){ return { next: function (){ return {value: Math.random().toFixed(2)}; } }; } }; var randoms_pool = []; for(var n of randoms){ randoms_pool.push(n); if(randoms_pool.length === 10) break; // 人为中断 } console.log(randoms_pool);
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
const randoms = {
[Symbol.iterator]: function () {
return {
next: function () {
var r = Math.random();
if ( r < 0.9 )
return { value: r, done: false }
else
return { value: null, done: true }
}
}
}
}
let randomsPool = [];
for ( var random of randoms ) {
randomsPool.push( random );
}
console.log( randomsPool )
添加回答
举报
0/150
提交
取消