함수 작동원리가
호출할때 함수 안에 내용물을 메모리에 올리고 실행하고 다되면 지우고 또 호출하면 생성 삭제 생성삭제 이렇게 된다하더라고
그래서 팁에보니까 함수를 클로저형식으로 쓰면 한번만 생성되고 쭉 쓸수 있다고 하더라고
function foo()
{
function print()
{
print("hello")
}
return function ()
{
print()
}
}
fooFunction = foo()
fooFunction(); // hello?
이런식으로
내가 궁금한건 foo에서반환한 익명함수는 메모리에 올려놓아져 있다고 생각하는데
저 print()함수는 호출하면 하면 생성삭제 아니면 저거도 같이 미리 생성되어있는건지 궁금해
언어는 자바스크립트야
자스를 기준으로는 자세히는 모르겠는데, 클로저를 잡고있는 스코프가 살아있는한 계속쓸수있긴함 그대신 잡고잇으니까 그거를 바꿀수가없지
다른쓰레드에서 바꾸면 concurrentException이 발생한다
이런 방지역할이없다면 자스에서는 비동기인거지
답변이 이해가 잘안되는데 foo()함수가 호출이 되면 함수안에 함수도 같이 메모리에 올려져 있는거야 아니면 호출할때만 메모리에 올려놓는거야? 언어마다 다른강?
먼가 마땅히 쉽게 말하기가 어렵누 내부함수를 호출안하는이상 메모리에 안올라감
호출하는순간 foo가올라가있는 메모리에 올라가는게아니라. 푸가 올라가있는 그 안에 올라간다고 생각해라
아 그렇구나.. 고마워요~