为了账号安全,请及时绑定邮箱和手机立即绑定

JS面试题,关于eval与new Function

JS面试题,关于eval与new Function

白衣染霜花 2018-10-16 17:23:49
var a,b,c; (function(){  eval('var b = 2');   (1, eval)('var c = 3');   (new 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);执行此段代码后,得到如下结果a: undefinedb: 2c: 3a: undefinedb: undefined c: 3http://codepen.io/quietcoder/...
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

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);


查看完整回答
反对 回复 2018-11-06
  • 1 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信