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

条件判断,表达式优先级

  1. (match = rcomma.exec(soFar))这个为何每次都能为真?,即使match的值为null。 

  2. groups.push((tokens = []));这个为何先push tokens原值然后赋新值,难道是因为函数表达式的的优先级高于赋值表达式,求解答。

正在回答

3 回答

第二条我的个人理解:                                                                                                                      groups.push((tokens = []))的执行顺序                                                                                                                  先赋值tokens=[] =>groups.push(tokens)                                                                                                          因为tokens是引用类型所以tokens再获取值时,groups的值也得到更新

0 回复 有任何疑惑可以回复我~

说一下第二条我个人的理解

可以将gourps.push((tokens = []))拆分为 

tokens= [];

groups.push(tokens);

tokens是接收了一个的数据,并将他push到groups,groups的结构就变成groups:[ [] ], 这里面的数组和tokens的数组指向的是同一个内存地址, 所以在下面的tokens.push操作中改变了数组的数据,对应的之前push到groups的数组也是改变了的。

表达的不是很清楚,用一个简单的例子应该就明白了,tokens只是保存数组的内存地址。

https://img1.sycdn.imooc.com//5b3f3da200016c1602210178.jpg

1 回复 有任何疑惑可以回复我~

喔,1看错了,push没理解到,SORRY。求2解说。

1 回复 有任何疑惑可以回复我~
#1

幽灵柯

是的,你说的很好
2018-05-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

条件判断,表达式优先级

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信