<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???
}
------解决方案--------------------
------解决方案--------------------
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)