javascript 中的 eval() 问题
Problem with eval() in javascript
有人可以帮助我理解这段JavaScript代码:
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)));}
很抱歉用最少的细节激怒了你们。实际上我从 - forum.fusioncharts.com/topic/8012-fusion-charts-on-android
它在Android中使用Phonegap使用Fusioncharts。所以Fusioncharts.js包含这个代码,我不是javascript的专家,没有得到它。所以寻求帮助。但是通过查看不同的答案,我觉得这里没有完整的 src 代码。
谢谢
斯内哈
定义了一个函数,它接受 6 个参数:
function(p,a,c,k,e,r)
它将参数 e 设置为另一个函数,该函数将初始"c"参数作为参数:
e = function(c)
然后,该函数的内容检查"c"是否小于"a"。如果是,则返回一个空字符串。否则,它将再次运行相同的函数 (e(,参数 c 的整数值除以参数 a。
return(c<a?'':e(parseInt(c/a)));
参数 p、k 和 r 未使用。
由于唯一可以返回的值是空字符串,因此不应期望发生太多情况。
至于实际用途是什么 - 打败我。
这看起来像一个生成的(打包代码( - 一种通常用于减少原始Javascript代码大小和/或使某人更难弄清楚正在发生的事情的策略。
这里必须有一些逻辑脚本,由于打包而被混淆。如果你手头有脚本,你可以用它来尝试解压缩它,弄清楚它背后发生了什么。
编写得更清晰,您的代码如下:
function(p,a,c,k,e,r){
e = function(c) {
return c < a ? '' : e(parseInt(c/a));
};
}();
所以你定义了一个接受 6 个参数的函数,定义了一个函数e()
(在其本地范围内(,该函数接受单个参数并递归调用自身,只要它的参数大于原始函数的第二个参数 ( a
(,最终要么返回 ''
要么无限递归a
介于 0 和 1 之间的任何值(假设正值 c
最初更大比a
(。
最外层的函数将由eval()
语句调用,但内部函数(e()
(不会。 由于e()
在本地的作用域为最外层的函数,这使得运行此代码毫无意义,至少如此处所示的孤立运行。 它似乎并没有真正做任何非常有用的事情。 特别是因为eval()
没有为a
提供任何值,所以当代码执行时a
将是未定义的,这意味着e()
不会做任何有用的事情,即使它被调用,即使它的预期行为可以准确地描述为"有用"。
另外,期待人们责骂你使用eval()
。
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- 递归使用 eval() 是检查程序执行的好方法吗?
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何修复由于在java脚本中使用eval()而在强化扫描中的动态代码评估问题
- Javascript-在包含数学运算的安全字符串上使用eval的问题
- 使用eval()执行用户提供的代码的问题
- javascript 中的 eval() 问题
- .each()和eval()的问题
- JS eval安全问题
- 使用eval和alternative解析大型json时出现问题
- fnObj=window[functionName]不是函数问题-eval()运行良好
- Javascript,又一个“太多的递归”问题:复仇的邪恶eval()