【问题标题】:translate javascript code to mode readable code with if and else [closed]使用 if 和 else 将 javascript 代码转换为模式可读代码 [关闭]
【发布时间】:2012-05-15 07:25:27
【问题描述】:

这是什么意思?

e[i] == "-" && (s > 1 || d === null) && ++s, !s && d !== null && (p.push(e[i]), s = 2), "+-".indexOf(e[i]) < (d = null) && (c = 1);

没有任何逻辑就无法读取这么多的sumbols

【问题讨论】:

  • 您是否要对缩小的代码进行逆向工程?这有什么意义?
  • 它是 mathparser 的免费代码的一部分,我在那个字符串中有问题,但我无法修复它,因为我不理解这样的语法。欢迎任何帮助!
  • jsbeautifier.org 是让代码更具可读性的好地方

标签: javascript reverse-engineering if-statement logical-operators


【解决方案1】:
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;

【讨论】:

  • 谢谢! :) indexOf() 给出了与 null 比较毫无意义的 int。在这种情况下可以用其他东西代替 null 吗?
  • 你可以把它改成"+-".indexOf('+') &lt; 0,这样字符更少,更容易理解。
  • Eric 的评论很可能代表了代码的意图。 “如果e[i] 既不是'+' 也不是'-',那么c = 1。” d = null 如何适应,我不能说。所以是的,尝试使用 if 语句的第二种形式,并将 &lt; null 替换为 &lt; 0
【解决方案2】:

尝试添加一些空格和换行符:

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;

由于&amp;&amp; 的工作方式,您可以在 C 中解决这个问题。对于表达式A &amp;&amp; B,首先执行A,只有当A的结果为真时才会执行B。所以单独的A &amp;&amp; B;可以翻译成if(A) B;。当然,这只有在不使用整个表达式 A &amp;&amp; B 的结果时才有效。

【讨论】:

  • 谢谢!抱歉这个愚蠢的问题,但是可以用 if 和 else 关键字来写吗?
  • 谢谢!我越来越接近理解了 :) 实际上我在这里遇到的问题是第三个表达式:比较 indexOf() 为空。由于比较类型 int 与 null,AS3 在 with 点发出警告。可以重写第三个表达式以避免警告消息吗?
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 2015-02-26
  • 2012-11-21
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
相关资源
最近更新 更多