JS문제풀이_10. 기타 (스코프&클로저)

jungeundelilahLEE·2020년 9월 15일
0

JS_문제

목록 보기
10/11

# INDEX

1. 변수와 자료형
2. 조건문
3. 문자열
4. 반복문
5. 배열
6. 객체
7. 고차함수
8. 재귀
9. Algorithm Basic
10. 기타 (스코프&클로저)

***매일 문제를 풀면서, 정확하게 알지 못했던 부분들을 다시 정리해보자 ^.~

10. 스코프 & 클로저



<문제1>

result의 값은?

						// 10
var x = 30;
function get(x) { return x;};
var result = get(20);

<문제2>

result의 값은?

						// 30
var x = 30;
function get() { return x; }
function set(value) { var x = value; }
set(10);
var result = get(20);

<문제3>

result의 값은?

						// 10
var x = 30;
function get() {
  return x;
};
function set(value) {
  x = value;
};
set(10);
var result = get(20);

<문제4>

result의 값은?

						// 30
x = 10;
function add(y) {return x + y};
function added(x) {return add(x) + add(x)};
var result = added(5);

정답

x = 10;
function add(y) {return x + y};			// 3) 매개변수 y = 5 // return 10(전역변수 x=10)+5 // return 15
function added(x) {return add(x) + add(x)};	// 2) 매개변수 x = 5 // return add(5)+add(5)
						// 4) add(5)+add(5) = 15+15 = 30
var result = added(5);				// 1) 함수 호출

<문제5>

result의 값은?

						// 20
x = 10;
function outer() {
  var x = 20;
  function inner () {
    return x
  };
  return inner()
};
var result = outer();

정답

x = 10;			
function outer() {		
  var x = 20;			// 2) 지역변수 x = 20
  function inner() {	
    return x			// 4) return x // x = 20 // 이 값이 최종 result의 값
  };
  return inner()		// 3) return inner() : 함수 호출
};
var result = outer();		// 1) 함수호출 go up! 

<문제6>

result의 값은?

						// 20
var x = 10;
function outer() {
  x = 20;
  function inner() {
    var x = x + 20;
    return x;
  };
  inner();
}
outer();
var result = x;

정답

var x = 10;			// 1) 전역변수 x = 10
				// 4) 전역변수 x = 20 (이곳으로 이동)
function outer() {
  x = 20;			// 3) x는 전역변수 선언 // 전역변수 x = 20 (이동!)
  function inner() {		
    var x = x + 20;		// 6) 지역변수 x = x + 20; // 지역변수 x = 전역변수x(20)+20 = 40;  
    **// 지역변수 x를 선언하면서 x+20은 inner함수 안에 갇히게 됨 //
    **// 따라서, inner함수 내의 x값은 NaN
    return x;			// 7) return x // x = 40;
  };
  inner();			// 5) inner 함수 호출
}
outer();			// 2) outer 함수 호출
var result = x;			// 8) result = x; // 4)의 전역변수 x값이 할당되어 x = 20

<문제7>

profile
delilah's journey

0개의 댓글