원시 자료형과 참조 자료형

스코프

스코프란?

핵심 :

  1. 지역/전역 스코프 나누기
var num1 = 10;

function foo() {
  num2 = 20;  // 선언되지 않은 변수 num에 20이 할당되었다.
//전역변수로 인식한다
  console.log(num1 + num2);
}

foo(); // 30
  1. 다음 코드 실행 후, result 값은?
//전역 스코프 : x, result
let x = 30; 

function get(){ 
	return x;
}; 
//지역 스코프 : "선언이 안 된 변수"

let result = get(20);
//get함수에 20이 전달되었는데 get함수에 파라미터가 없어서 
무시하고 넘어간다 그러므로 전역변수 x의 값 30 리턴
  1. 다음 코드 실행 후, result 의 값은?
//전역 스코프 : x, result
let x = 30; 

function get(x){ 
	return x;//지역 스코프가 찾으러 나가서 가장 가까운 x로 
}; 

let result = get(20);
  1. 다음 코드 실행 후, result의 값은?
let x=30; //전역
function get() {return x;} //지역 스코프  
function set(value){let x=value;} //지역x, 지역 스코프 
// 함수 안에 있는 value는 선언되지 않은 변수 
**=> 가장 지역 스코프부터 점차 밖으로 찾아나간다 
	1. 파라미터 value 2. set(10) 
but 어차피 리턴문이 없어서 실행 후 데이터가 사라진다**
//value 지역, 함수 안에 있는 value에 인자 할당

set(10); 
let result = get(20);//전역
  1. 다음 코드 실행 후, result의 값은?
let x=30; 
function get(){return x;}
function set(value){x=value;}//{x,value: 선언x}
//(value): 지역변수

set(10)
let result=get(20); 
  1. 다음 코드 실행 후, result의 값은?
let x=30; 
function get(x){return x;}
function set(value){x=value;}//{x,value: 선언x}
//(value): 지역변수

set(10)
let result=get(20); 
  1. 다음 코드 실행 후, result의 값은? // 각기 다른 지역스코프 2개
let x=10; 

function add(y){ 
	return x+y; 
} 

function strangeAdd(x){ 
	return add(x) +add(x) 
//add(5) + add(5) ->y의 자리에 5를 넣는다 
-> 전역변수 x=10 => 15 +15 => 30
}

let result = strangeAdd(5);
  1. 다음 코드 실행 후 result의 값은?