条件判断,表达式优先级

来源:7-5 Sizzle词法解析(中)

慕运维6166398

2018-05-14 22:34

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

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

写回答 关注

3回答

  • 慕侠3418849
    2019-10-16 16:43:30

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

  • 慕村0847538
    2018-07-06 18:02:47

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

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

    tokens= [];

    groups.push(tokens);

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

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

    https://img1.mukewang.com/5b3f3da200016c1602210178.jpg

  • 慕运维6166398
    2018-05-14 22:41:57

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

    幽灵柯

    是的,你说的很好

    2018-05-29 10:02:11

    共 1 条回复 >

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题