스코프(Scope)

변수의 접근할 수 있는 '유효범위'를 나타낸다.

스코프의 접근 범위

  • 전역 스코프(Global Scope): 가장 바깥의 범위
    • 전역 스코프에서 선언한 변수는 지역 스코프에서 사용이 가능하다.
  • 지역 스코프(Local Scope): 전역 스코프가 아닌 나머지 범위
    • 지역 스코프에서 선언한 변수는 전역 스코프에서 사용이 불가능하다.
let hi = 'hello'; // 전역 스코프

function talkMessage(){ // 지역 스코프
  let message = 'JavaScript';
  return hi + ' ' + message;
}

console.log(talkMessage());		// 'hello JavaScript'
console.log(hi);			// 'hello'
console.log(message);			// 'Uncaught ReferenceError: message is not defined'

 

 

지역 스코프에 변수는 전역 스코프의 변수보다 더 높은 우선순위를 가지게 된다.

  • 전역 스코프에 let name = 'cho'이고, 지역 스코프에 let name = 'kim'일 때, 지역 스코프에서 name을 return 하면 name이 출력된다.
  • 전역 스코프에만 변수가 선언될 경우 지역 스코프에서 전역 변수를 사용한다.
// 전역 변수와 지역 변수의 이름이 같을 경우
let name = 'cho';

function nameChange(){
    let name = 'kim';
    return name;
}

console.log(nameChange());		// 'kim'
console.log(name);		// 'cho'


// 전역 변수만 선언된 경우
let name = 'cho';

function nameChange(){
    name = 'kim';
    return name;
}

console.log(nameChange());		// 'kim'
console.log(name);		// 'kim'

 

'Coding > JavaScript' 카테고리의 다른 글

[JavaScript] Local Storage  (0) 2022.05.22
[JavaScript] 클로저  (0) 2022.05.13
[JavaScript] 객체  (0) 2022.05.10
[JavaScript] 배열  (0) 2022.05.10
[JavaScript] 반복문(for, while)  (0) 2022.04.28

📌 오늘은 결국 몸살이나서 조금 힘들었지만 최대한 오늘 정해진 학습과정을 견뎌냈고, 추가로 복습, 예습까지 진행했다. 대신 빨리하고 쉬어야 할 것이라 생각해서 평소보다는 학습을 못한것은 주말에 채워야겠다. 몸건강이 우선이다!!!

 

 

📗 오늘 학습한 내용

JavaScript

  • 원시자료형
    • 고정된 저장 공간을 차지하는 데이터
    • number, string, boolean, undefined, ,symbol, (null)
    • 하나의 변수에 하나의 데이터만 들어간다.
    • 변수를 복사하여 사용해도 원본은 변경되지 않는다.
  • 참조자료형
    • 대량의 데이터를 다루는 배열(Array)과 객체(Object)
    • 함수(function)
    • 데이터를 저장 공간에 넣는 것이 아닌 주소를 할당한다.
    • 저장 공간을 복사 할 경우 복사한곳의 데이터를 변경할 경우 원본도 변경된다.
  • 스코프
    • 전역 스코프
      • 전역 스코프는 말그대로 global 적으로 사용이 가능하다.
    • 지역 스코프
      • 지역 스코프는 한 블록에서만 사용이 가능하고 벗어날 수 없다.
    • var, let, const
  • 클로저
    • 함수에 함수가 선언되는 구조이다.
    • 특징
      • 데이터의 보존
      • 정보의 접근 제한(캡슐화)
      • 모듈화
    • 외부함수
    • 내부함수
    • 외부함수에 선언된 변수는 내부함수에서 접근이 가능하다.
    • 내부함수에 선언된 변수는 외부함수에서 접근이 불가능하다.

 

 

📘 추가로 공부할 내용

JavaScript

  • 클로저
  • ES6 신규 문법

 

 

 

 

📝 오늘 느낀점 & 마음 가짐

  • udemy JS 알고리즘 공부를 다시 해보자!!
  • 몸 건강이 우선이다!! 체력을 길러야 겠다!!

 

'Daily > Today I Learned' 카테고리의 다른 글

22.05.14_TIL  (0) 2022.05.14
22.05.13_TIL  (0) 2022.05.13
22.05.11_TIL  (2) 2022.05.11
22.05.10_ TIL  (0) 2022.05.10
22.05.09_TIL  (0) 2022.05.09

스택(Stack)

데이터를 차곡차곡 쌓아 먼저 들어간 데이터가 나중에 나가는 후입선출(Last In First Out, LIFO) 방식을 사용하는 자료구조이다.

JavaScript Code 및 사용 메서드

  • push(): 삽입
  • pop(): 삭제
let stack = [];

stack.push('data 1');	
console.log(stack);			// ['data 1']	
stack.push('data 2');
console.log(stack);			// ['data 1', 'data 2']
stack.push('data 3');
console.log(stack);			// ['data 1', 'data 2', 'data 3']

stack.pop()
console.log(stack);			// ['data 1', 'data 2']

 

 

큐( Queue)

먼저 들어온 데이터가 먼저 나가는 선입선출(First In First Out, FIFO)방식을 사용하는 자료구조이다.

현실에서 줄을 설때 앞사람부터 나가는 형식이라고 생각하면 된다.

 

JavaScript Code 및 사용 메서드

  • push(): 삽입
  • shift(): 삭제
let queue = [];

queue.push('data 1');			
console.log(queue);			// ['data 1']
queue.push('data 2');
console.log(queue);			// ['data 1', 'data 2']
queue.push('data 3');
console.log(queue);			// ['data 1', 'data 2', 'data 3']

queue.shift();
console.log(queue);			// ['data 2', 'data 3']

 

 

덱(Deque)

스택과 큐의 결합형 자료구조이며, 어디서든 데이터가 나가고 들어올 수 있다.

 

JavaScript Code 및 사용 메서드

  • push(): 삽입
  • unshift(): 삽입
  • pop(): 삭제
  • shift(): 삭제
let deque = [];

deque.push('data 1');		
console.log(deque);				// ['data 1']
deque.unshift('data 2');
console.log(deque);				// ['data 2', 'data 1']
deque.push('data 3');
console.log(deque);				// ['data 2', 'data 1', 'data 3']

deque.shift();
console.log(deque);				// ['data 1', 'data 3']
deque.pop();
console.log(deque);				// ['data 1']

 

배열(Array)

순서가 있는 값을 저장할 때 사용하는 자료구조이며 배열을 사용하는 자료구조의 대표적인 예로 스택, 큐, 덱이 있다.

 

배열의 구조

  • 요소가 들어있는 방의 번호를 인덱스라고 하며, 정수형만 입력이 가능하고 0부터 시작한다.
  • 배열에 값을 삽입하는 js 메서드는 push(), unshift()가 있으며, 삭제하는 메서드는 pop(), shift()가 있다. 
    자세한 내용은 자료구조 스택에서 다룬다.
인덱스(Index) 0 1 2 3
요소(element) 'banana' 'apple' 'peach' 'pineapple'

 

배열생성 및 출력

  • []을 사용하여 빈 배열을 생성할 수 있다.
  • new Array()를 사용하여 빈배열을 생성할 수 있다.
  • [](배열리터럴)을 사용하여 '배열[인덱스]'형식으로 요소를 출력 할 수 있다.
let num = [32, 43, 54];
let name = new Array('cho', 'kim', 'park');

console.log(num);		// [32, 43, 54]
console.log(name);		// ['cho', 'kim', 'park']

// num의 1번째 인덱스의 요소 출력
console.log(num[1]);	// 43

// name의 0번째 인덱스의 요소 출력
console.log(name[0]);	// 'cho'

// name의 마지막번째 인덱스 요소 출력
console.log(name[name.length-1]);	// 'park'

 

배열의 요소 재할당

let num = [32, 43, 54];

console.log(num);		// [32, 43, 54]

num[2] = 79;			// 54에서 79로 요소를 재할당
console.log(num);		// [32, 43, 79]

 

2차원 배열

let num = [[32, 43], [54, 65], [24, 89]];

console.log(num[1]);		// [54, 65]
console.log(num[1][0]); 	// 54

'Coding > JavaScript' 카테고리의 다른 글

[JavaScript] 스코프  (0) 2022.05.12
[JavaScript] 객체  (0) 2022.05.10
[JavaScript] 반복문(for, while)  (0) 2022.04.28
[JavaScript] 문자열  (0) 2022.04.27
[JavaScript] 조건문  (0) 2022.04.27

+ Recent posts