javascript - 自动用 if/else 替换条件运算符?

标签 javascript regex replace conditional-operator

一个特定的 JS 解析器(不在我的控制之下)不理解这样的嵌套条件运算符语法:

return num === 1 ? condition ? condition : something : something;

因此,我想用 if/else block 替换文件中的所有条件运算符(简单的和嵌套的)。我该怎么做? (Textmate 或类似的正则表达式会有所帮助。)

最佳答案

How do I go about it? (A regexp for Textmate or similar would be helpful.

我认为这对于正则表达式是不可能的——你需要用它们来解析整个 JS 表达式语法。当然,您可以使用它们来查找三元运算符的出现,但需要手动替换它们。

这是因为条件运算符形成表达式,而 if/else 结构是语句。这意味着您将需要取消包含 if-else 周围的三元运算符的语句。改造一般有两种方案

<some statement ( condition ? then-expression : else-expression) >

  1. if ( condition ) {

    <some statement then-expression>

    } else {

    <some statement else-expression>

    }

  2. var helper;

    if ( condition )

    helper = then-expression;

    else

    helper = else-expression;

    <some statement helper>

选择哪一个取决于某些语句的复杂性(对于您的return-语句,我会选择#1)。由于替换带来了自己的语法规则,您甚至可能需要调整周围的 block 。所有这一切都不是一项微不足道的任务,恕我直言,只有当您已经有了要转换的已解析 AST 时才能自动完成。

关于javascript - 自动用 if/else 替换条件运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690067/

相关文章:

python - 在 Python 中将正则表达式与 fileinput 结合使用会出现错误

javascript - 从字符串 JavaScript 中删除所有空格

javascript - 如何通过 Javascript 将 div 中的某些 HTML 代码替换为另一个新的 HTML 代码

javascript - 如何在单击按钮或链接时使用 javascript 或 jquery 动态制作或创建 Binder ?

javascript - 如果未选中复选框,如何禁用注册按钮?

javascript - 如何使用 MEAN 堆栈提交成功的发布请求?

javascript - 如何使用 x-init 使用 AlpineJS 设置下拉选项的 'selected' 属性

ruby - 如何匹配字边界 "or"[@#]?

regex - 如何将正则表达式替换中捕获的模式转换为大写?

php - 替换字符串中最后一次出现的字符串