Javascript疑问二:匿名函数

被认为是javascript的一个优雅特性,匿名函数到底有怎么样的魅力,是如何讲作用发挥到极致的,学习后完成。

【1】javascript DOM 高级程序设计

匿名函数对于在DOM对象上注册侦听器,或将函数作为参数传递给其他方法时很有用。

【2】http://www.cnblogs.com/TomXu/archive/2011/12/29/2290308.html
 

函数声明:

  function 函数名称 (参数:可选){ 函数体 }

函数表达式:

  function 函数名称(可选)(参数:可选){ 函数体 }

 所以说匿名函数应该是函数表达式。

函数表达式:

  • 匿名函数 
  • 赋值表达式的一部分
  • new表达式
  • 被括号括住的,比如(function foo(){});括号 ()是一个分组操作符,它的内部只能包含表达式
表达式和声明的区别:

 

  •  函数声明会在任何表达式被解析和求值之前先被解析和求值,即使你的声明在代码的最后一行,它也会在同作用域内第一个表达式之前被解析/求值。
  • 函数声明在条件语句内虽然可以用,但是没有被标准化,也就是说不同的环境可能有不同的执行结果,所以这样情况下,最好使用函数表达式。
函数声明只能出现在程序函数体内。从句法上讲,它们 不能出现在Block(块)({ ... })中,例如不能出现在 if、while 或 for 语句中。因为 Block(块) 中只能包含Statement语句, 而不能包含函数声明这样的源元素。
另一方面,仔细看一看规则也会发现,唯一可能让表达式出现在Block(块)中情形,就是让它作为表达式语句的一部分。但是,规范明确规定了表达式语句不能以关键字function开头。而这实际上就是说,函数表达式同样也不能出现在Statement语句或Block(块)中(因为Block(块)就是由Statement语句构成的)。

 

 命名函数表达式:名字只在新定义的函数作用域内有效。

 

 

 

 

 

 

posted on 2013-08-09 23:28  wxb007  阅读(155)  评论(0编辑  收藏  举报