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

JS面试题,关于eval与new Function

JS面试题,关于eval与new Function

慕后森 2018-08-03 00:22:31
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: undefinedc: 3
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超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-08-05
  • 1 回答
  • 0 关注
  • 1063 浏览
慕课专栏
更多

添加回答

举报

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