读书人

foo1和foo2有什么区别;难道不一样吗?

发布时间: 2012-03-19 22:03:05 作者: rapoo

foo1和foo2有什么区别;难道不一样吗?
<script>
function foo1(str){
var yx02 = new Function("return " + str )();
//alert(yx02);
}

function foo2(str){
var yx02 = return str;
//alert(yx02);
}
</script>

foo1和foo2有什么区别;难道不一样吗?
如果不一样,foo1有什么好处?什么时候会用到foo1?

[解决办法]

JScript code
function foo2(str){ var yx02 = return str; //what's this???}
[解决办法]
探讨
JScript codefunction foo2(str){var yx02=return str;//what's this???}

[解决办法]
LZ写的两种都有错误
JScript code
new Function("return " + str) //将字符串写入了函数体function(){return str;} //包闭
[解决办法]
看下面的例子就明白了
JScript code
<script>var a = "初始值";var b = "初始值";var c = "初始值";function foo1(str){     var yyy1 = new Function("return '" + str + a +"';");    a = "已变化";    return yyy1();}function foo2(str){     b = "已变化";    return yyy2(str);}function foo3(str){     var yyy3 = function(str){return str+a;};    c = "已变化";    return yyy3(str);}function yyy2(str){    return str + b;}alert(foo1("111"));//111初始值alert(foo2("111"));//111已变化alert(foo3("111"));//111已变化</script>
[解决办法]
分析一下:
function foo1(str){
var yyy1 = new Function("return '" + str + a +"';");//先执行它结果为var yyy1 = new Function("return '111初始值';");//已经成字符串'111初始值',与 str或a的变化已经没 关系了
a = "已变化";//不会改变上行的初始值
return yyy1();//调用var yyy1 = new Function("return '111初始值';");
}
程序是一行行执行的,请记住!

[解决办法]
有不同的
JScript code
var f=function(){alert(1)}var yx01 = new Function("return " + f)(); var yx02 = function(){return f}();yx01()alert(yx01==f)yx02()alert(yx02==f) 

读书人网 >JavaScript

热点推荐