2013-07-16 19 views
6

Jeśli mam kod:funkcji wewnątrz funkcji

function A() { 

    function B() { 

    } 

    B(); 

} 

A(); 
A(); 

jest funkcja B analizowany i utworzone za każdym razem nazywam (więc może to zmniejszyć wydajność A)?

+0

Dlaczego trzeba to? :) –

+0

Powiedziałbym, że tak, ponieważ funkcja B istnieje tylko w zakresie funkcji A – DarkBee

+0

. Dlaczego nie wykonasz funkcji B poza A i nie wywołasz B wewnątrz A? –

Odpowiedz

2

Jeśli chcesz korzystać z funkcji tylko wewnętrznie, zamknij się. Oto przykład

var A = (function() { 
    var publicFun = function() { console.log("I'm public"); } 
    var privateFun2 = function() { console.log("I'm private"); } 

    console.log("call from the inside"); 
    publicFun(); 
    privateFun2(); 

    return { 
     publicFun: publicFun 
    } 
})(); 

console.log("call from the outside"); 
A.publicFun(); 
A.privateFun(); //error, because this function unavailable 
2
function A(){ 

    function B(){ 

    } 
    var F=function(){ 
     B(); 
    } 
    return F; 
} 
var X=A(); 
//Now when u want to use this just use this X function it will work without parsing B()