接下来谈谈本理。 对于保守的列举器来说,我们会认为列举器理当正在每次挪用前往一个值,那就是next体例,但就像陈女瀚说的,那需要正在yield的时候把函数停住,虽然可以或许实现,但实的很麻烦。 但!现实上我发觉,大大都时候,我们都是用foreach那样的语法来拜候列举器的。那样一来就给了我一个很是讨巧的法子,不实现next体例,而是实现each体例。 each体例和next的体例的区别正在哪里呢?熟悉jquery的朋朋就会晓得,each体例其实可以或许视为将next倒过来,不是前往列举值,而是领受一个函数,把列举值当做参数传进去。 反是那一倒,所无问题都送刃而解了。我们没无需要去久停一个函数的施行,只需要将处置列举值的逻辑注到阿谁函数里面去就完了。所以现实上那里的yieldhost就是完成了一个倒拆的工做,把enumerator领受的阿谁函数(也就是window.alert(item),注到了列举函数外(即fun)。最末施行的结果就像是那样: |