2016-10-28 2 views
0

나는 5 년간 프로그래밍을 해왔지만 방금 뭔가 궁금해하기 시작했다. 이 코드 예제에서는 함수에서 값을 반환하고 변수를 저장합니다. 이것이 어떤 순서로 발생합니까? 언어가 해석되거나 컴파일되는 것이 중요합니까?자바 스크립트의 반환 값

function foo() { 
    return "junk"; 
} 

var bar = foo(); 

이제 저는 bar = "junk"를 알고 있습니다. 이것이 어떤 순서로 일어나는가? 나는 함수가 호출 될 때 함수를 호출하는 함수에 제어권을 반환하고 프로그램이 중단 된 부분부터 다시 시작한다는 것을 안다. 그래서 다시 'var bar ='로 되돌아 간다.

동적 유형 지정 언어에서 막대는 처음에 어떻게 생성됩니까? 힙에 만들어 졌나요?

+0

연대순으로 발생합니다. –

+0

[유용한 비디오] (https://youtu.be/QyUFheng6J0?t=6m47s) – nem035

답변

1

자바 스크립트의 모든 함수 호출은 프레임 스택으로 실행됩니다.

"foo"호출이 발생하면 "foo"함수 호출 전체에 대해 스택 프레임이 만들어지고 그 프레임에는 모든 foo 변수와 그 정보가 들어 있습니다.

다른 함수가 foo에서 호출 된 경우 해당 함수에 대해 다른 스택 프레임이 만들어집니다.

스택 동작이 옳다는 것을 알았습니다. 마지막 부분이 먼저 나옵니다. 여기서 foo (있는 경우) 내부의 함수가 먼저 실행되어 스택에서 빠져 나옵니다. 다음 차례는 "foo"입니다.

"foo"가 실행되고 스택에서 나오면 이제 변수가 돌아옵니다 (귀하의 경우에는 "bar"입니다).

관련 문제