为什么var a=new Function(console.log(1))自动执行?

为什么var a=new Function(console.log(1))自动执行?

阅读 3.5k
5 个回答

这句代码中,在Function()传入的参数是console.log(1)执行后的返回值,并不是构造函数自动执行。

function id(x) {return x;}
id(3+4); // 为什么会计算 3+4 的结果?

当一个函数被当做构造函数的时候(new一个类)会有默认的返回实例的动作。

Function的构造函数接收多个字符串参数,当你new Function(console.log(111))时,会首先执行console.log(111),返回undefined。然后把undefined传给Function,返回一个函数实例。

//类似于
function a(m){
   alert(m);
}
function b(n){
   alert(n)
}
b(a(123));

兄弟Function是函数的内置对象,你new实例话了这个对象,浏览器引擎在解析时就会拥有它的属性和方法,你传入的参数是console(1)所以会给你返回1.这个可不是构造函数自动执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题