Javascript函数调用问题

时间:2011-05-11 16:49:38

标签: javascript jquery

有可能做我想要的吗? changeEl()功能也在fadeGall()

    function initOpen(){

        $('ul.piple-holder > li > a, ul.work-holder > li > a').each(function(){

            var _box = $(this);

            _box.click(function(){

                //SOME CODE HERE TO RUN changeEl(0); on each _hold 
                //element from fadeGall()

            });

        });

    }


    function fadeGall(){

        var _hold = $('div.work-info');

        _hold.each(function(){

            var _hold = $(this);

            function changeEl(_ind){
                return;
            }

        });
    }

2 个答案:

答案 0 :(得分:1)

不知道你想要做什么,但如果你问是否可以在另一个内部定义一个函数,当然可以。请注意,嵌套函数不能在其定义的函数之外调用。

答案 1 :(得分:0)

您可以在函数中嵌套函数。嵌套(内部)函数对其包含(外部)函数是私有的。它也形成了一个封闭。

  

闭包是一种表达(通常是   一个可以免费的功能)   变量和环境   绑定那些变量(那   “关闭”表达式)。   reference

由于嵌套函数是闭包,这意味着嵌套函数可以“继承”其包含函数的参数和变量。换句话说,内部函数包含外部函数的范围。

总结:

  • 只能从外部函数中的语句访问内部函数。
  • 内部函数形成一个闭包:内部函数可以使用外部函数的参数和变量,而外部函数不能使用内部函数的参数和变量。

以下示例显示了嵌套函数:

function addSquares(a,b) {
   function square(x) {
      return x * x;
   }
   return square(a) + square(b);
}
a = addSquares(2,3); // returns 13
b = addSquares(3,4); // returns 25
c = addSquares(4,5); // returns 41

由于内部函数形成一个闭包,你可以调用外部函数并为外部函数和内部函数指定参数:

function outside(x) {
   function inside(y) {
      return x + y;
   }
   return inside;
}
fn_inside = outside(3);
result = fn_inside(5); // returns 8
result1 = outside(3)(5); // returns 8