JS的三种函数声明

js有3种方法进行函数声明。
1、function语句类型函数声明
function test1(){}
函数的调用方式:test1();
2、函数的直接量形式
var test2 = function(){}
函数的调用方式:test2();
3、构造函数式
var test3 = new Function("a","b","return a+b;");
函数的调用方式:test3(10,20);
3种函数声明方式比较:
 首先从性质上来说明:第一种和第二种都属于静态,第三种属于动态
其次从解析顺序上说明:第一种优先解析,第二种和第三种都属于顺序解析,为了更好的说明,做如下的测试。
//探测三种函数声明的解析顺序 
  function f(){return 1;} 
  alert(f()); 
 var f = new Function("return 2;"); 
 alert(f()); 
 var f = function(){return 3;} 
  alert(f()); 
  function f(){return 4;} //标记1
  alert(f());  //标记2
  var f = new Function("return 5;"); 
  alert(f()); 
  var f = function(){return 6;} 
  alert(f());
也许你会认为执行以上函数之后,输出的结果为1,2,3,4,5,6,事实上,结果的执行顺序为4,2,3,3,5,6,怎么样,很吃惊吧,让我来给阁下解释一下。
function语句类型函数声明优先解析,当页面加载之后,js解析器会首先解析该函数,语句型f函数共两个,首先return 1,而后再解析另一个语句型函数f,由于js中没有重载,所以第二个f函数会覆盖第一个return 4,因此,在alert的时候先输出4,其他的函数都是顺序执行,故顺序输出,2,3,当函数执行到标记1的时候,发现页面加载时该函数已解析,故不再解析,所以执行标记2的时候,f函数依然是上一次解析的f函数,故输出3,接着再顺序执行,因此最后的输出结果为:4,2,3,3,5,6.
若还有不明白的地方,欢迎大家留言!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值