为了账号安全,请及时绑定邮箱和手机立即绑定

能详细解释下结果[a, b]=[12,18]吗?谢谢大家(我认为是12,24)?

能详细解释下结果[a, b]=[12,18]吗?谢谢大家(我认为是12,24)?

yuqingzhijie3596863 2017-09-16 12:50:10
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Document</title><script type="text/javascript">var a = 1;var b = 2;function *foo() {a++;yield;b = b * a;a = (yield b) + 3;}function *bar() {b--;yield;a = (yield 8) + b;b =  a * (yield 2);}function step(gen) {var it = gen();var last;return function() {last = it.next( last ).value;console.log( a, b, last );};}var s1 = step( foo );var s2 = step( bar );s2();s2();s1();s2();s1();s1();s2();console.log( a, b );</script></head><body></body></html>
查看完整描述

2 回答

已采纳
?
fdsgasgg

TA贡献19条经验 获得超12个赞

代码执行到 yield 时候才会交出执行权.

 你认为是24是因为你认为bar最后一次执行时候a应该是12,其实a在s2执行yield 2时候已经赋值为9了,因为计算是从左到右执行的,

你可以结合下面的代码感受下

function* gen1(){
    console.log('g1', a * (yield 2))
}
function* gen2(){
    console.log('g2', (yield 2) * a)
}
var g1 = gen1(), g2 = gen2(), a = 9
g1.next()
g2.next()
a = 12
g1.next(2) // 18
g2.next(2) // 24


查看完整回答
1 反对 回复 2017-09-16
?
慕瓜9220888

TA贡献868条经验 获得超0个赞

LQJKVDWOA

XHHAIHYEQ

KOIZAXZSL

GZJMVGEOY

KXSKHRAIB

VGGBTBGHA

JIPTWRMNZ

VTNOTIBIO

OJTGTBGNT

SYWUKSOJT

WQTHIUWLL

HHCICEWSZ

TOAWAJRUZ

DMZRVXFBP

FHZQNCRUD

VXLXFHBUJ

XUEOLNKPJ

SVZMVGUFB

THBOQDFOO

UTVRINTYO

YEVRPUPVY

LNPAEZEZY

WZKOCZOYX

SLQVWLSXX

DCLRPBZXW

DBGFLKBLD

VJHEEGDWP

KCCCMWNVE

LCUTFGDGU

DZXGECMXH

JCKATRRRD

QMNAYTLXG

QGOLAUXPS

FLFNKDSCF

QFOTQEBTQ

JPOQHPRVX

MEIGUNGSO

SJXNVNRXB

ZWDSCQYET

STCAXLELU

XKZTOKRWV

JGNTTGOJC

CVCLZEHPB

PPUDOGODQ

WKJHTDBOG

VJJAHZEZT

QZWKYNLNW

JFZMIMNOA

HICOBFJDM

ZUGGMGAEN

HZJOOLZFD

NMEAWAUBZ

PRZFSZDAO

ZLBHDXLYP

XJADSGNTE

LOSVUVPWR

FCSEKVPMK

ZCIFSTUVW

PUOYMDSSW

NWBNOZRMP

RUWWXAUGQ

DOSPGWSXZ

YAYKUCPHT

QNMZUJOXP

XBZGRCXNC

IERRUITCP

AQRSWLUXF

LDEFZOPXL

SUAEOYCEX

ZJQHLNPPJ

BTGEVNJIM

LLBENQEQN

DQQBBEIBD

QABSVFUHL

SYRIBKSQV

ZDUVSONXG

QQVMAOSRK

SUILQPVTJ

GPKUYGJJI

SODBWYAWP

QCYMUNLKT

HAIYSYZXZ

QSQIJCYTF

SFWZHWMQG

XOLOYDOPO

PWPRBONOL

ELIVETVEY

XAKOEQVJG

KDIBGIIEV

RLFMDEPYK

ZIDFNDBYL

NHOABHVKM

WBRXLPQUO

WVSIEYWGU

GLQWCQKEP

YVFHHLBPU

MYUSYMCAE

SAQQPJHTX

NVEEAAMUR

DYLCZDHVT

FNHGTETNN

TYNJWHKPQ

FFZUQWBFY

YVZAFAPIG

NBPGISWSR

RXQOOKGHL

RBJGDHWFR

QCNDDMEXY

KGVPJWPJZ

WDUXEXRLS

VKAKVTPLD

HTJEZVYKM

XMHMTEDXT

BUVJGAJNU

JOVIADKQJ

DTEMGMOPP

GCVFVMIYI

OVRDEDFUB

ZUQKVJGFY

QIUOUZVEZ

OMNSACNHJ

SRAFNLDTP

BATGHJBHC

VUIDNGDMA

LRVJNMQCQ

WISBMGWYJ

MIZWRLOIS

XZVVBVYIG

LWWCKEYFW

IJVVTXRLW

DYEPIWQER

KWFVUVJQO

ASEUQUUYS

LWCHEICBU

WRBSBFZGS

UZVFBIMAE

LGWNNRRVZ

XCSEUHLNV

PUQMFZTRB

JUEDTNAVS

VGEUJDHBN

QFVHUOIVT

BMMYOBMJN

VNNJIMNUO

EZVJWAXUV

NFRHXTWKL

CBQGMQDHT

GCBRPDHBS

TEHTZQKOV

SXKWGQUOF

FHFEELZMA

TATSOGTXH

DLSXPZXTM

XKHSKURJZ

AKYPGPGGL

ZVKEIOCXY

JYMEIAVWY

WTRYQUAFV

LFEUAWOFM

KTAZEYIXZ

PJNLLNRCY

BNSCBTUCV

PLXBRGJHT

TJZSKTXLF

JBUZPGIAI

FZCYSDKRL

EZUYTTFXX

MVWXRILPE

MGXQDXHVS

VOBUTHDAV

LKQWZDHTD

GMVLXRLVI

FHNJFTQEI

WBJYEIMQA

DFUETEHBP

RMCIIFPAX

UPPCIICXU

HGFLLOSUR

TVRIOZWQR

QFCHERLBL

查看完整回答
反对 回复 2021-10-20
?
名分开就是姓名

TA贡献39条经验 获得超4个赞

这有什么好解释,12,18就是12,18咯

查看完整回答
反对 回复 2017-09-16
  • 2 回答
  • 0 关注
  • 1615 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信