那是什么意思?
e[i] == "-" && (s > 1 || d === null) && ++s, !s && d !== null && (p.push(e[i]), s = 2), "+-".indexOf(e[i]) < (d = null) && (c = 1);
没有任何逻辑就看不懂这么多的sumbols
那是什么意思?
e[i] == "-" && (s > 1 || d === null) && ++s, !s && d !== null && (p.push(e[i]), s = 2), "+-".indexOf(e[i]) < (d = null) && (c = 1);
没有任何逻辑就看不懂这么多的sumbols
if (e[i] == "-" && (s > 1 || d === null))
++s;
if (!s && d !== null) {
p.push(e[i]);
s = 2;
}
if ("+-".indexOf(e[i]) < (d = null))
c = 1;
如果你没有 C 背景,最后的作业if
可能对你没有吸引力;在这种情况下:
d = null;
if ("+-".indexOf(e[i]) < null)
c = 1;
尝试添加一些空格和换行符:
e[i] == "-" && (s > 1 || d === null) && ++s,
!s && d !== null && (p.push(e[i]), s = 2),
"+-".indexOf(e[i]) < (d = null) && (c = 1);
请注意,这是一个逗号表达式 - 它是由逗号分隔的 3 个表达式。每个表达式实际上是一个语句
condition && action;
由于这种工作方式,您可以在 C 中摆脱这种情况&&
。对于表达式A && B
,首先执行 A,只有当 A 的结果为真时才执行 B。所以就A && B;
可以自己翻译成if(A) B;
. 当然,这仅在A && B
不使用整个表达式的结果时才有效。