慕运维6166398
2018-05-14 22:34
(match = rcomma.exec(soFar))这个为何每次都能为真?,即使match的值为null。
groups.push((tokens = []));这个为何先push tokens原值然后赋新值,难道是因为函数表达式的的优先级高于赋值表达式,求解答。
第二条我的个人理解: groups.push((tokens = []))的执行顺序 先赋值tokens=[] =>groups.push(tokens) 因为tokens是引用类型所以tokens再获取值时,groups的值也得到更新
说一下第二条我个人的理解
可以将gourps.push((tokens = []))拆分为
tokens= [];
groups.push(tokens);
tokens是接收了一个的数据,并将他push到groups,groups的结构就变成groups:[ [] ], 这里面的数组和tokens的数组指向的是同一个内存地址, 所以在下面的tokens.push操作中改变了数组的数据,对应的之前push到groups的数组也是改变了的。
表达的不是很清楚,用一个简单的例子应该就明白了,tokens只是保存数组的内存地址。
喔,1看错了,push没理解到,SORRY。求2解说。
jQuery源码解析(架构与依赖模块)
84049 学习 · 280 问题
相似问题
回答 1
回答 1