美文网首页
【日记】2019-08-14 关于js逗号操作符和优先级问题

【日记】2019-08-14 关于js逗号操作符和优先级问题

作者: 良辰夜 | 来源:发表于2019-08-14 18:13 被阅读0次

先谈谈经历吧,今天debug js的时候发现了代码被混淆过了,但是由于比较关键,只能硬着头皮看了。
然后就看到非常经典的一行代码。


简化一下差不多是这个意思 return i && (expa,expb),expc;
这里比较痛苦的就是逗号操作符啥意思呀?和for循环或者调用参数相关的我们都很熟悉,但是单独用时什么意思呢?

百度果然是人类解决问题最好的方式:逗号操作符

这里面很关键的一句话:逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。

相当于现在有个 expr1, expr2, expr3
然后先执行 expr1,然后执行expr2,最后执行expr3,并把expr3返回。

然而,我随便试了下,反正貌似不太对。


前面a和b的值不出我所料,说明先执行第一个表达式,后执行第二个表达式,但是为什么c=2呢?难道不应该返回第二个表达式的返回结果才对嘛?

百思不得解。
.
.
.

然而,一个无意的回眸,难道 = 的优先级不同? =不是最末尾的优先级?

通过运算符的优先级,我最终确定了,,的优先级居然比=还低,而且还是最末尾的。

那么 c= a=1,b=1; 可以转换成 (c= a =1),b=1; ,所以c的返回值其实是1。
为了验证这个,我们可以这样做。
c = (a=1,b=1)

这样就完美了。

相关文章

  • 【日记】2019-08-14 关于js逗号操作符和优先级问题

    先谈谈经历吧,今天debug js的时候发现了代码被混淆过了,但是由于比较关键,只能硬着头皮看了。然后就看到非常经...

  • Java运算符优先级

    优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 相同优先级中,按结合顺序计算。大多数...

  • js逗号操作符

    最近看了些其他人分享的面试经历 发现了这么一道题 突然就陷入了沉思,这好像触及到了我的知识盲区... 一开始以为这...

  • JavaScript 逗号表达式笔记

    #JavaScript 逗号表达式笔记 ##逗号操作符是多元操作符,可以在一条语句中执行多个操作 1.逗号操作符可...

  • 前端——js使用

    自增和自减 逻辑操作符 非 与 或 相等 全等 逗号 条件运算符 运算符的优先级 语句 表达式和运算符等内容想当与...

  • 逗号操作符

    基本概念: 使用逗号操作符可以在一条语句中执行多个操作。逗号操作符多用于声明多个变量;但除此之外,逗号操作符还可以...

  • Java之逗号操作符

    在说逗号操作符的时候我们要注意,逗号操作符不是逗号分隔符,逗号用作分隔符时用来分隔函数的不同参数。 Java里唯一...

  • 四、MySQL常用函数

    操作符优先级 • 下图展示了所有操作符的执行优先级,从高到低,同一行中的操作符优先级相同,相同优先级的情况下则从左...

  • JS中检测对象的方法以及基本数据类型与引用数据类型的区别

    今天被问到一个关于js判断对象的问题,先稍稍做个总结 检测对象的方法 1.typeof操作符 typeof操作符对...

  • js day03

    A我今天学了神马 操作符(操作符种类) 优先级 &&和||运算 If语句 for循环 循环案例

网友评论

      本文标题:【日记】2019-08-14 关于js逗号操作符和优先级问题

      本文链接:https://www.haomeiwen.com/subject/oeenjctx.html