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라고 할까?


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

3. Closure

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

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

0개의 댓글