条件(如果有)和可执行部分在哪里:
(o = k + 1 < a.length && a.charAt(k + 1) == o) && k++;
来自jQuery日期选择器。
答案 0 :(得分:5)
您可以逐步执行此操作。
首先,让我们使用JavaScript的operator precedence规则添加所有剩余的括号:
( o = (((k + 1) < a.length) && (a.charAt(k + 1) == o)) ) && k++;
所以它说
(k+1) < a.length
。它将是true
或false
。false
将false
分配给o
,否则将值(a.charAt(k + 1) == o)
分配给o
。false
分配给o
,那么您已完成。k
。答案 1 :(得分:2)
此代码正在更改变量o
的内容含义。
在输入变量包含一个字符并在退出时,它将是true
或false
,具体取决于字符串k+1
的位置a
处的字符是否正好字符。如果k+1
恰好落在字符串之外,则o
将设置为false。
如果字符与此表达式匹配,则副作用也会增加k
。
这个代码在我看来是一个糟糕的优化的例子......我也不明白为什么需要处理k+1
落在字符串之外的特殊情况(除非o
变量可以可能在输入中包含空字符串...)