TIL-15_2021.01.05

Jiwoo Joy Kim (zuzokim)·2021년 1월 5일
0

TIL

목록 보기
15/30
post-thumbnail

TIL

💡scope

이번에 debubber; 사용법을 다시 명확하게 이해했다.

  • block{} : scope를 구분하는 단위
  • block scope / function scope :
  • 드디어 var/let/const 의 차이를 알 수 있게 되었다!
  • var : javascript 엔진은 기본적으로 함수단위로 자신만의 scope를 가진다. (block 범위를 벗어나도 사용이 가능하다.)
    --> function scope

  • let : block scope. 재선언 불가능.
  • const : block scope. constant variable. 값이 변하지 않는 변수=상수를 정의할 때, 재할당/재정의 불가능.
for(var i = 0; i < 5; i++){
	console.log(i); //다섯번 iteration
}
console.log('final i:', i); //5 --- i++증감을 한 뒤 출력
//
//
for(let i = 0; i < 5; i++){
	console.log(i); //다섯번 iteration
}
console.log('final i:', i); //Error```

💡debugger;

이번에 debubber; 사용법을 다시 명확하게 이해했다.
검사하고 싶은 위치에 디버거를 찍고 코드 실행이 되는지, 안된다면 어떤 이유에서 안되는지 확인해볼 수 있다.

function greetSomeone(firstName){
	let time = 'night';
  	if(time === 'night'){
       let greeting = 'Good Night';
      	debugger; // (block 내부에서는 작동함을 알 수 있음)
     }
  return greeting + ' ' + firstName;
}
greetSomeone('Steve'); // reference error: greeting is not defined

💡Window 객체

global scope(전역 범위)를 대표하는 객체 :
global scope에서 선언된 함수, var 로 선언된 변수는 window 객체와 연결된다.

  • 선언 키워드 없이 변수를 초기화 하지 말 것. (윈도우객체와 연결되어 전역변수로 취급된다.)
    - 'use strict'; strict mode를 활용해 방지할 수 있다.
  • 전역 범위에 너무 많은 변수를 선언하지 않기. 스코프를 생성해 그 안에서 변수를 선언해 사용한다.

💡Closure

  • 함수도 리턴할 수 있다. (함수의 값을 호출해 리턴하는 것 뿐아니라)
  • 외부 함수의 변수에 접근할 수 있는 내부 함수
  • 클로저 함수 안에서는
    -지역변수,
    -외부함수의 변수,
    -전역변수
    의 접근이 모두 가능하다.
  • 커링 : 함수 하나가 n개의 인자를 받는 대신, n개의 함수를 만들어 각각 인자를 받게 하는 방법. 외부 함수의 변수 값을 고정(저장)해놓고 템플릿 함수와 같이 재사용할 수 있다.
  • 클로저 모듈 패턴 : 블록 내부에 선언된 변수는 외부에서 접근/수정이 불가능하지만, 간접적으로 수정할 수 있도록 해 안전성을 높인다.
profile
- I make something! ✍🏽👩🏻‍💻🎬🎨💖🪑🔨🔜

0개의 댓글