解析器会先读取函数声明,并使其在执行任何代码之前可以访问;
function Fn(x,y){ return x + y;}必须等到解析器执行到它所在的代码行才会真正被解释执行
var fn=function(x,y){ return x + y ;}从技术角度讲,这是一个函数表达式。一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。
//new Function(arg1,arg2...,body)var sum = new Function('x','y','return x + y ;')sum(1,2) //3//特殊注意点:var name='sss'; function fun(){ var name='lll'; return new Function('return name');//不能获取局部变量 } console.log(fun()()); //sss //另一个注意点 new Function('var x =1;return x;')() //1 x //报错,外部无法访问Function内部变量新闻热点
疑难解答