有人可以帮助我理解这段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
使用Phonegap在android中使用Fusioncharts进行输出。所以Fusioncharts.js包含这个代码,我不是javascript的专家,但没有得到它。所以请求帮助。但通过查看不同的答案,我觉得这里没有完整的src代码。
感谢
斯纳
答案 0 :(得分:1)
定义了一个带有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未使用。
由于唯一可以返回的值是空字符串,因此不应期望发生太多事情。
关于实际用途是什么 - 打败我。
答案 1 :(得分:0)
这看起来像生成的(打包代码) - 一种通常用于减少原始Javascript代码大小和/或使某人更难以解决正在发生的事情的策略。
这里必须有一些逻辑脚本,由于打包而被混淆。如果您有手头的脚本,可以使用this尝试解压缩它,找出它背后发生的事情。
答案 2 :(得分:0)
写得更清晰,您的代码如下:
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()
不会做任何有用的事情,即使它被称为即使它的预期行为可以准确地描述为“有用”。
此外,期望人们骂你使用{{1}}。