js怎么理解局部变量,为什么能活下来?
以前一直以为函数局部变量在函数用完后就不存在了,看下面的例子,它到底活不活啊,求高手指点。

解决方案 »

  1.   

    因为闭包Ninja的getSlices属性指向了一个匿名函数,而这个匿名函数的作用域链中有slices这个局部变量
      

  2.   

    我个人感觉在Ninja()这个函数里面 slices这个局部变量对于slice()这个回调函数相当于外部变量。要是哪面向对象来说 Ninja想当个类  slices 相当于全局变量 slice()相当于方法, 你new这这对象 调用了2次他的方法。这事全局变量slices 肯定就变成2了
      

  3.   

    Ninja 已经相当于一个对像,而slices已经相当于这个对像的一个属性,当你NEW的时候实际上已经创建了一个实例,属性 slices也随这个实例而存在,只要这个实例没有被销毁或释放,那么这个变量便会一直存在。如果你想通过a.b的形式调用应该使用a.protype.b形式来定义。
      

  4.   

    那如果我有N个方法分别A/B/C,互没联系,并且只要一运行方法就var10个变量,然后我循环3次连续调用A/B/C方法,请问到最后一次循环后方法的变量时多少呢,是0?30?还是90呢