这段代码的运行过程是怎样的呢? createMyFunction()返回是一个新的function其实就是把add(a,b) 变成新的function function(a,b,a+b);Function(10, 2, return 10 + 2;) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 javascript真的很难以理解 象这样难以理解的代码多的去了 不过一般很少用 javascript真的很难以理解?====没有这个感觉,倒是浏览器的差别可以让人烦死,所以我放弃,只管IE。 function createMyFunction(myOperator){ return new Function("a", "b", "return a" + myOperator + "b;");}var add=createMyFunction("+");你可以这样理解:function createMyFunction(myOperator){ return function(a, b){return eval(a + myOperator + b);}}由于变量作用域,myOperator 贯穿到了你返回的那个函数体里并被固化了下来。这个时候的 add 变成了:var add = function(a, b){return eval(a + b);}是一个函数 直接写这样得了<script type="text/javascript">//<![CDATA[ function fNumOpt(arg){ return eval(arg); } alert(fNumOpt('1+2')); alert(fNumOpt('1*2')); alert(fNumOpt('1/2')); alert(fNumOpt('1-2')); //]]></script> 倒...更直接alert(1+2)... 在javascript中,函数可以当作一种数据类型,也就是说我们可以任意引用这个函数,你可以参考后两种方式:function f(x) { return x*x; } // function statementvar f = new Function("x", "return x*x;"); // Function( ) constructorvar f = function(x) { return x*x; }; // function literal 大概明白了 但是这句 由于变量作用域,myOperator 贯穿到了你返回的那个函数体里并被固化了下来。我有糊涂了 又明白了一点点,,,才发现 meizz 的功底很深啊! 居中问题 canvas动画效果..高手指点 求js完成 图片抽奖! 关于上传下载的问题 能否给我推荐一个 js 写的 DataGrid Java Applet 怎么实现Web实时通讯 一段残缺的图片百叶窗代码求高人补充完整 求助,帮忙改下图片播放的代码 一个棘手的JavaScript问题 如何判断一页面是否是showmodaldialog打开的 如何用正则表达式提取网页内容? 还不是抄来的...帮忙解释解释.~~function toggle_collapse(objname, unfolded)
{
return new Function("a", "b", "return a" + myOperator + "b;");
}
var add=createMyFunction("+");
你可以这样理解:
function createMyFunction(myOperator)
{
return function(a, b){return eval(a + myOperator + b);}
}
由于变量作用域,myOperator 贯穿到了你返回的那个函数体里并被固化了下来。
这个时候的 add 变成了:
var add = function(a, b){return eval(a + b);}
是一个函数
//<![CDATA[
function fNumOpt(arg){
return eval(arg);
}
alert(fNumOpt('1+2'));
alert(fNumOpt('1*2'));
alert(fNumOpt('1/2'));
alert(fNumOpt('1-2'));
//]]>
</script>
更直接
alert(1+2)
...
你可以参考后两种方式:function f(x) { return x*x; } // function statement
var f = new Function("x", "return x*x;"); // Function( ) constructor
var f = function(x) { return x*x; }; // function literal