需要一些关于这个JavaScript系列的帮助和解释

时间:2011-10-25 05:44:51

标签: javascript jquery

条件(如果有)和可执行部分在哪里:

(o = k + 1 < a.length && a.charAt(k + 1) == o) && k++;

来自jQuery日期选择器。

2 个答案:

答案 0 :(得分:5)

您可以逐步执行此操作。

首先,让我们使用JavaScript的operator precedence规则添加所有剩余的括号:

( o = (((k + 1) < a.length) && (a.charAt(k + 1) == o)) ) && k++;

所以它说

  1. 计算值(k+1) < a.length。它将是truefalse
  2. 如果这是falsefalse分配给o,否则将值(a.charAt(k + 1) == o)分配给o
  3. 如果您已将false分配给o,那么您已完成。
  4. 否则增加k

答案 1 :(得分:2)

此代码正在更改变量o的内容含义。

在输入变量包含一个字符并在退出时,它将是truefalse,具体取决于字符串k+1的位置a处的字符是否正好字符。如果k+1恰好落在字符串之外,则o将设置为false。

如果字符与此表达式匹配,则副作用也会增加k

这个代码在我看来是一个糟糕的优化的例子......我也不明白为什么需要处理k+1落在字符串之外的特殊情况(除非o变量可以可能在输入中包含空字符串...)