代码改变世界

js中eval()

2017-04-03 22:42  渣渣爱学习  阅读(485)  评论(0编辑  收藏  举报

      看到了eval()的使用方法,虽然未曾用过,但仍是尝试着去理解

      eval()是一个函数,拥有改变全局变量和局部变量的能力

      全局变量:当eval置于最顶层代码中,这时候eavl修改的是全局变量,另外的情况是,eval置于最顶层代码中,但若是将eval赋值给另一个对象,那么调用这个对象修改的是全部变量

      局部变量:当eval置于函数内,修改的是局部变量

具体事例:

      { 

          var k = eval;

          var x = 'global'; var y = "global";

          function f(){

               var x = "local";

               eval("x += 'changed';");

               return x;

          }

            function g(){

               var y = "local";

               k("y += 'changed';");

               return y;

          }

          console.log(f(),x)//localchanged global

          console.log(g(),y);//local globalchanged;

      }