码迷,mamicode.com
首页 > 其他好文 > 详细

函数声明和函数表达式的理解

时间:2014-10-29 16:30:05      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   sp   div   on   

  JScript和ECMAScript的变现不一致,但是对于现在的w3c规范来说都是遵循ECMAScript的。所以函数申明和函数表达式对JScript的表现在此就不做过多的介绍,可以移步汤姆大叔blog深入学习:揭秘命名函数表达式

1 function foo(){ return 1; }//函数声明
2 var foo = function(){ return 1; };//函数表达式
 1 function a(){
 2   alert(foo());//1
 3   function foo(){ return 1; }//函数声明(提升到作用域的最顶端)
 4 
 5 }
 6 function b(){
 7   alert(foo());//undefined is not a function
 8    var foo = function(){ return 1; };//函数表达式(只是把变量名提升到了作用域的最顶端,函数实现并未提升到最顶端)
 9 }
10 a();//1
11 b();//undefined is not a function
对于这个形式的解析:
1 var foo = function bar(){ return 1; };//函数表达式
2 alert(bar())//bar is not defined
3 alert(foo())//1
在JScript中会出现以下表现
1 var f = function g(){
2     return [
3       arguments.callee == f,
4       arguments.callee == g
5     ];
6   };
7 f(); // [true, false]
8 g(); // [false, true]
在ECMAScript中的表现是:g is undefined;  
在ECMAScript中函数表达式声明函数的时候对于后面的表达式默认是匿名函数,如果起了名字任然不起作用(PS:这是我的理解)
 

函数声明和函数表达式的理解

标签:style   blog   http   io   color   ar   sp   div   on   

原文地址:http://www.cnblogs.com/cdwp8/p/4059728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!