函数定义中变量的硬编码值

时间:2014-02-18 10:21:34

标签: javascript function

我有一个在客户端编写的函数,作为字符串发送到服务器,并在那里执行。 在这个函数里面,我使用客户端的一些原始变量。一个例子可能是

function (obj){
   return obj.number == aNumber;
}

其中aNumber是客户端的整数变量,而obj是服务器上的对象。

问题是作为服务器上执行的功能,服务器在那里没有任何aNumber变量,所以我想做的是用他的实际值替换aNumber,但我不知道该怎么做,因为函数的代码实际上从未在客户端执行过。

是否有任何解决方案(可能不涉及将函数解析为String)?

这似乎是一个微不足道的问题,但我根本找不到解决方案。

1 个答案:

答案 0 :(得分:1)

由于aNumber仅存在于客户端,因此这是您唯一可以执行此操作的地方。

您可以替换(在客户端上):

var functionString = theFunction.toString();
functionString = functionString.replace(/\baNumber\b/g, aNumber);

...然后将functionString发送到服务器。这假设此代码在可以访问aNumber的上下文中运行,因为函数被转换为字符串;并且aNumber实际上是一个数字。

但这是 认真 糟糕的主意。退出细节并查看更广泛的图片,我确定有一个解决方案,不涉及向服务器发送函数以在那里执行。