function f(){return 1;} //函数1
alert(f());
var f =new Function("return 2;"); //函数2
alert(f()) ;
function f() {return 3;} //函数3
alert(f());
function f(){return 4;} //函数 4
alert (f()) ;
var f = new Function("return 5"); //函数5
alert(f());
var f = function () {return 6 ;} //函数6
alert (f());
//上面这段函数,在运行测试的时候,输出的顺序是4.2.2.2.5.6而教程里面的解析顺序
//却是4.2.3.3.5.6,这是什么问题?有哪位大神可以和我说一下?谢谢先了
4.2.2.2.5.6 是这个顺序没有错 ,function 定义的函数,会有函数声明提升,会先解析
可以理解为无论定义多个,都会以最后一个为准 。
所以第一个数是4, 第二个是2 ,第三,第四 ,函数声明提升中解析过了,直接跳过。所以还是2
后面就不需要解释了
相当于
// function f(){return 1;} //函数1
alert(f());
var f =new Function("return 2;"); //函数2
alert(f()) ;
// function f() {return 3;} //函数3
alert(f());
function f(){return 4;} //函数 4 这个重复定义,以最后一个为准 。 前面两个相当于被注释掉。这个被提升到第一个函数的位置。
alert (f()) ;
var f = new Function("return 5"); //函数5
alert(f());
var f = function () {return 6 ;} //函数6
alert (f());