TIL(03.17/ 1W 2D/ Tue)

Seokhwan Yi·2020년 3월 24일
0

TIL

목록 보기
2/9

1. Code Quality 평가

  1. 의도대로 작동하는가?
  2. 결함이 없는가?
  3. 읽기 쉽고 유지보수 용이한가?

이를 위해 Linting & Testing을 한다.
우선 Testing 이라 함은 뭐 잘되는지 안되는지 확인하는 것같은데
Linting은 뭐지? 해서 찾아보니 보푸라기라는 뜻이다.
그래서 위키한테 물어보니

Linter?

lint 또는 linter 는 소스 코드 를 분석 하여 프로그래밍 오류, 버그 , 문체 오류 및 의심스러운 구성 을 표시 하는 도구입니다 . 이 용어 는 C 언어 소스 코드 를 검사 한 Unix 유틸리티 에서 유래 한 것 입니다. - 더 자세히.

한마디로 옷을 입다보면 보푸라기가 일어나는데 이 보푸라기인 에러를 띄워주고 고쳐주는 역사를 지니고 있는 에러도구로 생각하면 편하다.
그래서 Linter를 이용하여 우리가 지정한 스타일을 지키고 있는지 체크한다.
이는 팀 혹은 회사내에서의 규칙을 정하고 그 규칙을 지키면서 일관된 코드 스타일을 유지할 수 있다.
그러면 코드파악이 쉽고, 코드내의 오류들도 쉽게 찾을 수 있게된다.
Airbnb사의 Style Guide가 유명하다. - 더 자세히: Airbnb

Linter를 이용하는 방법은?

  1. 코드를 작성하면서 Lint 체크 : 사용하고 있는 IDE의 플러그인을 사용한다.
  2. Git commit을 하기 전에 Lint 체크 : Git hooks (rule을 모두 지켜야 commit 가능하게 설정)
  3. test하면서 Lint 체크 : CI
  4. ESLint 설치와 이용 - ESLint

2. Scope

Advanced Scope

Scope : 영역 또는 범위

  • 중첩 가능
    => 지역 변수는 전역에 선언된 전역변수에 접근이 가능.
  • 기본적으로 function level scope를 지닌다.
    => var일 경우고, let, const는 block scope 규칙을 따른다.
  • 전역변수는 window객체와 연결(node.js에서는 global)
    => 선언 없이 초개화된 변수는 전역변수가 된다.
    => 'use strict'를 사용하면 막을 수 있다.
  • var 변수 선언은 scope 상단으로 hoisting 된다.
    => hoisting 올리다.
    => JS엔진이 내부적으로 변수선언을 scope의 상단으로 hoisting(끌어 올림)으로 변수선언이 범위에 따라 선언과 할당으로 분리.
  • Scope는 Lexical하다. but, this는 Dynamic 하다.
    => Scope는 작성할 때 유효범위(Scope)가 결정된다.
    => this는 함수가 실행될 때 execution context가 결정된다.

Lexical scoping 이란 단어가 무슨말인가?

Lexical: 어휘의
Lexical scope: 어휘의 범위(정적 범위)
도대체 무슨말이야...
사용될때가 아니라 정의될때 (그래서 어휘적 유효범위!) 사용되는 변수를 사용한다.

여기서 어떤것이 lexical scope라고 할까?

lexical vs. Dynamic
자바스크립트는 렉시컬 스코프 규칙을 통해 global, global을 출력하였으며, Perl 은 동적 스코프 규칙을 통해 local, global을 출력한다.

3. Closure

외부변수에 접근 가능한 내부함수를 말한다.

profile
위대한 한잔을 좋아 합니다.

0개의 댓글