CanPHP框架技术讨论

导航

 

  1. 什么是自执行的匿名函数?
   它是指形如这样的函数: (function {// code})();

  2. 疑问
  为什么(function {// code})();可以被执行, 而function {// code}();却会报错?

  3. 分析
  (1). 首先, 要清楚两者的区别:
        (function {// code})是表达式, function {// code}是函数声明.
  (2). 其次, js"预编译"的特点:
        js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
  (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
        当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一  个函数, 故而遇到();时, 便会被执行.

posted on 2011-09-01 14:58  創丗仼  阅读(201)  评论(0编辑  收藏  举报