解析器會先讀取函數聲明,并使其在執行任何代碼之前可以訪問;
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內部變量新聞熱點
疑難解答