在javascript中给分隔符/逗号(,)添加别名

时间:2015-10-04 18:36:07

标签: javascript

听起来很疯狂,我们如何给出逗号' javascript中的别名?

例如,当我们有这样的事情时:

Normal version: functionCall(send, country);

Alias version: functionCall(send TO country);

以上只是一个例子,我对如何实现这样的事情非常好奇。我受到了PHP sql查询的启发。

这似乎是多余的,但它确实有助于提高可读性,并根据具体情况为逗号提供更多含义。

编辑:与正则表达式合作可以完成我的工作。

3 个答案:

答案 0 :(得分:1)

如果你在那里做疯狂科学,你可以使用eval函数并在使用之前替换代码。

以下是一个例子:

var str = "function foo(send TO country) { alert(send + ' ' + country); }";
str += "foo('hello', 'world')"

function execute(input) {
  return eval(input.replace(/ TO /g, ", "));
}

execute(str);

同样,即使你可以,也不要使用这些东西。 :-)

更好的方法,如果你真的想要有一些可读的东西,那就是拥有这样的函数:

function foo(send) {
  return {
     to: function (country) {
        alert(send + " " + country);
     }
  }
}

foo("Hello").to("USA");

一个相关项目,就是用JavaScript创建自定义运算符。我是用Esprima做的。您可以查看结果here。甚至还有online demo

答案 1 :(得分:1)

正如其他人在评论中指出的那样,重新整理你的整个剧本会导致一个完全无法解决的混乱(以及对无尽的安全地狱的评价)。但既然你在谈论可读性,那么坚持Javascript规则并给你的论点名称更有意义:

function functionCall(send, toCountry) { ... }

但是如果你坚持给自己的脚本一个更加自定义的感觉,那就选择类似DSL的方法,这样你就可以使用了

parcel.cardboardColor('brown').deliverPriority('high').toCountry('US').send();

对于这种方法,您可以在网上找到大量资源,例如https://blog.jcoglan.com/2008/03/21/composing-dsls-in-javascript/

答案 2 :(得分:1)

另一种方法是在构建步骤中通过C ++预处理器运行代码,并将其放在代码的顶部:

#define TO ,

当然,我认为这是一个非常糟糕的主意,未来负责维护的人会讨厌你。