看下這個簡單的例子,弄懂了就知道next的執行流程了,偶爾得讓腦子運動一下下

總結的簡單流程是:
(1)
執行next后會從上往下依次返回每個yield表達式的值,
(2)
如果next有傳參的話,會整個覆蓋掉將要返回當前yield的上一個yield,
(3)
方法內的yield表達式和return都執行完了,就會直接返回undefined了。
所以它的流程才會是:
入參 分析結果
1 1(無論是否傳參,傳什么參數,返回第一個表達式的值1)
3 3(返回第二個表達式的值yield a,a=上一個yield表達式yield 1,被參數3覆蓋,所以a=3)
4 4(返回第三個表達式的值yield b,b=上一個yield表達式yield a,被參數4覆蓋,所以b=4)
5 12(返回return a+b+c,c=上一個yield表達式yield b,被參數5覆蓋,所以c=5,也就是a+b+c=3+4+5=12)
1 1(無論是否傳參,傳什么參數,返回第一個表達式的值1)
3 3(返回第二個表達式的值yield a,a=上一個yield表達式yield 1,被參數3覆蓋,所以a=3)
4 4(返回第三個表達式的值yield b,b=上一個yield表達式yield a,被參數4覆蓋,所以b=4)
5 12(返回return a+b+c,c=上一個yield表達式yield b,被參數5覆蓋,所以c=5,也就是a+b+c=3+4+5=12)
這下沒錯了,
太不容易了
太不容易了
