自己测试eval
var s = 'var fn=function test(){return 1;}';
function demo2(){
eval(s);
return fn;
}
var fn = demo2();
alert(fn())
弹出来的是1
而像这样
var s = 'function test(){return 1;}';
function demo2() {
return eval(s);
}
var fn = demo2();
alert(fn());
提示是fn不是一个function,这是怎么回事
var s = 'var fn=function test(){return 1;}';
function demo2(){
eval(s);
return fn;
}
var fn = demo2();
alert(fn())
弹出来的是1
而像这样
var s = 'function test(){return 1;}';
function demo2() {
return eval(s);
}
var fn = demo2();
alert(fn());
提示是fn不是一个function,这是怎么回事
解决方案 »
- 求高手帮看看这段代码..加密过的东西用着不放心.
- js解密,哪个高手来帮下忙,我完全不懂
- 请问这个自动补全中的高亮显示是怎么回事,谢谢
- hide menubar,toolbar,addressbar in current window
- javascript控制图片的长宽大小有很多,可是我如何控制客户上传文件物理大小呢?
- stack overflow at line:0 什么原因?
- 请问怎样能实现和社区树型菜单一样的效果
- javascript是怎么实现这个不断变化的文字的???
- 输入规定为英文,数字,下划线,不能为中文
- 好菜的问题,为什么我按任何按键都无效
- 怎样判断google map 是街景模式?
- 颜色格式转换:CMYK to RGB 急求!
var fn = demo2();是调用demo2方法并将返回值付给fn
应该是 var s = 'function(){return 1;}';
function demo2() {
return eval(s);}
var fn = demo2();
alert(fn());
function demo2() {
return eval(s);
}
等价于
function demo2() {
function test(){return 1;}
}
等价于
function demo2() {
test: function() { return 1;}
}就不需要多说了
var s = 'var fn=function test(){return 1;}';
function demo2(){
eval(s);
return fn;
}
var fn = demo2();
alert(fn())
弹出来的是1
第一种:因为var fn=function test(){return 1;},所以可以把fn看成是方法,alert(fn())这样写没有问题。
而像这样
var s = 'function test(){return 1;}';
function demo2() {
return eval(s);}
var fn = demo2();
alert(fn());
提示是fn不是一个function,这是怎么回事
第二种:function test(){return 1;}这样写没有想第一种那样把fn声明为一份方法,var fn = demo2();而这句话只是说把方法demo2()返回的值赋给fn,所以fn在这个地方只是个变量,不是个方法。
function demo2() {
function test(){return 1;}
} function demo2() {
var fn=function test(){return 1;}
}
区别