2017-12-28 4 views
0

내부 함수를 통해 지역 변수의 변화에 ​​들어

function init() { 
 
    var name = "Breaking Bad"; 
 
    function getName() { 
 
    console.log(name); 
 
    } 
 
    function setName(newName) { 
 
    name = newName; 
 
    } 
 
    return { 
 
    getName: getName, 
 
    setName: setName 
 
    }; 
 
} 
 

 
const sayMyName = init().getName; // during initialization 
 
init().setName('Heisenberg'); // can be updated multiple times later 
 
sayMyName(); // isn't latest i.e. NOT Heisenberg
getName 최신 name를 얻을 수 있도록 할 수있는 일

?

PS : 나는했지만, 내부 기능에 많은 답변을 읽고 유래에 대한 해결책을 찾을 수 없습니다, 폐쇄 등

+1

function init() { var name = "Breaking Bad"; function getName() { console.log(name); } function setName(newName) { name = newName; } return { getName: getName, setName: setName }; } var init1 = init(); //save the initialization var sayMyName = init1.getName; init1.setName('Heisenberg'); // can be updated multiple times later sayMyName();
. 그래서 항상 초기 값을 줄 것입니다. 달성하고자하는 것을 설명하면 대체 솔루션 – Rajesh

답변

8

PS : 나는 시도했지만 유래에 대한 해결책 후를 찾을 수 없습니다 내부 기능에 대한 읽는 많은 답변 등 폐쇄

당신이

init().setName('Heisenberg'); 
을했을 때

당신이 유를 종료하기 때문에 p를 init을 호출 할 때마다 다른 참조 번호 init()으로 설정하면 getNamesetName이라는 다른 참조가 반환됩니다.

는 확인 그것은 당신이`초기화를()`를 호출 지금, 당신은 새로운 객체를 반환하는

+1

으로 코드 샘플을 실행 가능한 스 니펫으로 변환 할 자유를 얻었습니다. 팁에 스 니펫이 포함되어있는 경우 "스 니펫 복사"버튼을 클릭하여 대답의 일부가 될 수 있습니다. –

+0

@MichaelGeary 고마워, 나는 어쨌든 똑같이하려고했다 :) – gurvinder372

관련 문제