听起来很疯狂,我们如何给出逗号' javascript中的别名?
例如,当我们有这样的事情时:
Normal version: functionCall(send, country);
Alias version: functionCall(send TO country);
以上只是一个例子,我对如何实现这样的事情非常好奇。我受到了PHP sql查询的启发。
这似乎是多余的,但它确实有助于提高可读性,并根据具体情况为逗号提供更多含义。
编辑:与正则表达式合作可以完成我的工作。
答案 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 ,
当然,我认为这是一个非常糟糕的主意,未来负责维护的人会讨厌你。