javascript - JS面试题,关于eval与new Function
怪我咯
怪我咯 2017-04-11 10:57:21
[JavaScript讨论组]
var a,b,c;
(function(){
  eval('var b = 2');
  (1, eval)('var c = 3');
  (new Function('var a = 4'))();
  document.write('
a: ' + a); document.write('
b: ' + b); document.write('
c: ' + c); })() document.write('
a: ' + a); document.write('
b: ' + b); document.write('
c: ' + c);

执行此段代码后,得到如下结果

a: undefined
b: 2
c: 3
a: undefined
b: undefined
c: 3

http://codepen.io/quietcoder/...

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
高洛峰

eval能访问上下文,new Function只能构建自己的一个私有作用域。


更新,注释一下

var a, b, c;
(function() {
  // eval('var b = 2');
  // 调用当前作用域
  var b = 2;

  // (1, eval)('var c = 3');
  // 逗号操作符,括号表达式,返回的是最后一个挂载在window上的eval
  window.eval('var c = 3');

  // (new Function('var a = 4'))();
  // 申明一个匿名函数
  (function() {
    var a = 4;
  })

  document.write('<br>a: ' + a);
  document.write('<br>b: ' + b);
  document.write('<br>c: ' + c);
})()
document.write('<br>a: ' + a);
document.write('<br>b: ' + b);
document.write('<br>c: ' + c);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号