컴퓨터는 잘못이 없다..
[JavaScript]함수 호출과 return값 분석해보기 ★★★★ 본문
★아래 개념을 확실히 해야 java, kotlin을 배울 때 편하당★
[Stack과 Heap]
[각 데이터 타입]
실제 array type data는 object type으로 인식하기 때문에 Heap에 저장된다.
즉, array type data는 heap에 저장된다!
[데이터 참조는 어떻게?]
[함수 호출과 return 예약어]
1.return 예약어
└함수를 호출하면 결과값을 return 해준다.
└return이 없거나 return 옆자리가 휑하면? undefined를 return해준다./또한 실행코드를 다 수행하고 함수가 종료된다.
└함수를 호출해 함수가 실행되다가 return을 만나면 함수가 종료된다. 종료된 후 함수를 호출 한 곳으로 돌아간다.
2. 함수 호출
함수 호출은 함수명() 으로 호출하며 함수를 호출하면 그 함수는 return값 그 자체가 된다.라고 생각하기!!!!★★★★★
ex) return 10 인 b()함수를 호출하면 b() 는 10(number type)이 된다.
ex) data = [{객체1},{객체2},{객체3}]이고
return data인 getData() 함수를 호출하면 getData()는
[{객체1},{객체2},{객체3}](array type)이 된다.
근데 array type은 [] 로 데이터에 접근하므로 getData()[index] 이고 이 데이터는 object type이므로 (.)dot으로 접근해서
최종적으로 getData()[index]. ~ 이런 모양이 된다!
[전체적으로 확인해보기]
아래와 같이 여러 data type이 섞여있어도 접근할 줄 알아야함!
[제대로 이해했는 지 check 해보기]
Q1)
function test(){};
let a = test();
이때 a에 들어있는 값? → undefined type의 undefined (return 이 없거나 return 뒤가 비어있으면 defined를 return한다.)
Q2)
function test(){ return {}; };
let a = test();
이때 a에 들어있는 값? → object type 참조값(힙에 저장된 object타입 데이터의 위치)
Q3)
function test(){ return {num:1} };
let a = test;
let b = test();
let c = test1().num;
let d = b.num;
각 변수에 들어있는 값?
a → function타입 참조값(힙에 저장된 function타입 데이터의 위치)
b → object타입 참조값(힙에 저장된 object 타입 데이터의 위치)
c → number타입 정수1
d → number 타입 정수1
Q4)
function test(arg){ return arg+1; };
let a = test(10);
이때 a에 들어있는 값? → number 타입 정수 11
Q5)
function test(){ return [10,20,30,40,50] };
let a = test();
let b = tes1()[2];
let c = test1().length;
각 변수에 들어있는 값?
a→ array타입의 참조값(힙에 저장된 array 타입의 데이터의 위치)
b→ number type의 정수 30
c→ number type의 정수 5
Q6)
function test(){
let arr = [10, 20, 30];
arr.push(40);
return arr;
}
let a = test();
let b = test().length;
각 변수에 들어있는 값?
a → array 타입의 참조값(힙에 저장된 array 타입의 데이터의 위치)
b → number type 정수4
'공부 > JavaScript' 카테고리의 다른 글
[JavaScript]addEventListener에서 쓰는 이벤트 종류 (0) | 2020.11.12 |
---|---|
[JavaScript]createElement() 사용해서 동적으로 요소 추가하기 (0) | 2020.11.10 |
[JavaScript]document객체 참조할 수 있는 키 값 보는 방법, document 객체 의미 (0) | 2020.11.10 |