js三种声明方式

JS中声明函数大体上有三种方法: 
1.常规方法 
JScript code function funcName(var1,var2....){ //add you code here } 

2.匿名函数引用法(找不到具体的称呼,暂且先这么叫) 
JScript code var funcName=function(var1,var2...){ //add you code here } 

3.构造函数法 
JScript code var funcName=new Function("x","y","alert(x+y);"); 

3中方法对函数的执行没有区别只是语法上和函数初始化的时候有些区别,通过如下实验 
可以看出他们的区别 

JScript code alert(fn1); alert(fn2); alert(fn3); function fn1(){ alert("fn1"); } var fn2=function(){ alert("fn2"); } var fn3=new Function("alert('fn3');"); fn1(); fn2(); fn3(); 
可以看到只有fn1被输出了函数体代码,其他两个都是undefined。因为JS的执行分为两个阶段 
预处理阶段和执行阶段,预处理阶段会对代码进行扫描分析并初始化变量表。通过第一种方法 
声明的函数在预处理阶段就会被初始化,而其他两种只有在执行阶段执行到相应行是才会被初始化

你可能感兴趣的:(js)