eval() / Function()

 1 var o1 = new function(){
 2         return "晶晶";
 3     };
 4     console.log("o1",JSON.stringify(o1));
 5 
 6 
 7     var o2 = new function(){
 8         this.name = "nick";
 9     };
10     console.log("o2",JSON.stringify(o2));
11 
12 
13     var o3 = new function(){
14         this.name = "xian";
15         return "gege";
16     };
17     console.log("o3",JSON.stringify(o3));

一. function(){}  / new function(){}的区别。

二. eval / new Function /(function(){})()

console.log(typeof un);
    console.log(typeof deux);
    console.log(typeof trois);

    var jsstring = "var un = 1; console.log(un);";
    eval(jsstring);//1

    jsstring = "var deux = 2;console.log(deux);";
    new Function(jsstring)();// 2

    jsstring = "var trois = 3; console.log(trois);";
    (function(){
        eval(jsstring); // 3
    })()    

    console.log(typeof un); // number
    console.log(typeof deux); // undefined
    console.log(typeof trois);// undefined

eval("var arr = [12,3,4];console.log(arr);");// eval() 跟 new Function() 传入字符串

console.log(arr); // [12,3,4];   eval()可以访问和修改它外部的变量,这是Function做不来的!

 1 (function(){
 2         var local = 1;
 3         eval("local = 2; console.log(local)");// 2
 4         console.log(local);// 2
 5     })();
 6 
 7     
 8 
 9     (function(){
10         var local = 1;
11         Function("console.log(typeof local);")();// undefined
12     })();
13 
14 
15     (function(){
16         var local = 1;
17         eval("console.log(local)");// 1
18         console.log(local);// 1
19     })();
20 
21     (function(){
22         var local = 1;
23         Function("console.log(" + local + ");")();// 1
24     })();

 

  

eval() 与 JSON数据格式- 需要加上() 将代码块转为表达式 

posted @ 2013-12-06 17:56  楚玉  阅读(389)  评论(0编辑  收藏  举报