이를 위해 Linting & Testing을 한다.
우선 Testing 이라 함은 뭐 잘되는지 안되는지 확인하는 것같은데
Linting은 뭐지? 해서 찾아보니 보푸라기라는 뜻이다.
그래서 위키한테 물어보니
lint 또는 linter 는 소스 코드 를 분석 하여 프로그래밍 오류, 버그 , 문체 오류 및 의심스러운 구성 을 표시 하는 도구입니다 . 이 용어 는 C 언어 소스 코드 를 검사 한 Unix 유틸리티 에서 유래 한 것 입니다. - 더 자세히.
한마디로 옷을 입다보면 보푸라기가 일어나는데 이 보푸라기인 에러를 띄워주고 고쳐주는 역사를 지니고 있는 에러도구로 생각하면 편하다.
그래서 Linter를 이용하여 우리가 지정한 스타일을 지키고 있는지 체크한다.
이는 팀 혹은 회사내에서의 규칙을 정하고 그 규칙을 지키면서 일관된 코드 스타일을 유지할 수 있다.
그러면 코드파악이 쉽고, 코드내의 오류들도 쉽게 찾을 수 있게된다.
Airbnb사의 Style Guide가 유명하다. - 더 자세히: Airbnb
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: 어휘의
Lexical scope: 어휘의 범위(정적 범위)
도대체 무슨말이야...
사용될때가 아니라 정의될때 (그래서 어휘적 유효범위!) 사용되는 변수를 사용한다.
자바스크립트는 렉시컬 스코프 규칙을 통해 global, global
을 출력하였으며, Perl 은 동적 스코프 규칙을 통해 local, global
을 출력한다.
외부변수에 접근 가능한 내부함수를 말한다.