undefined는 아무것도 지정하지 않았을 때의 기본 값. 예를 들어 변수만 선언하고 값을 할당하지 않은 상태에 undefined임. 참고로 undefined는 NaN임.
이 둘은 헷갈리기 때문에 스스로의 컨벤션을 만드는 것이 좋음.
eqeq 줄이기
동등 연산자(==)를 말함.
이 둘의 차이는 형 변환 유무임. ==는 형변환을 하고 ===는 하지 않음. 이때 ==는 형변환을 해버리기 때문에 신중하게 사용해야 함. 사람이 봤을 땐 느슨한 검사를 하는 것 같지만 실제론 암묵적인 형변환이 일어나는 것임.
대신 Number등 형 변환을 수동으로 해서 비교를 하는 방법을 추천함.
형변환 주의하기
parseInt에 두 번째 인자로 10을 지정하는 것이 좋음. 10진수가 기본이 아니기 때문.
암묵적인 변환이 아닌 명시적인 형변환을 해주자.
isNaN
2진수와 10진수 사이의 간극이 소수점임.
IEEE 754라는 부동소수점으로 해결을 하려 함.
isNaN은 숫자가 아니다라는 의미이기 때문에 typeof로 판별을 할 경우 헷갈릴 수 있음.
isNaN(123)은 false임. 숫자가 숫자가 아니다 → 숫자다.
따라서 Number.isNaN()으로 검사하는 것을 추천함. 엄격한 검사를 할 수 있음.
경계 다루기
min - max
최소값, 최대값이 포함 여부를 결정해야 함(이상-초과, 이하-미만).
ex) MIN_NUMBER_LIMIT, MIN_IN_NUMBER
begin - end
주로 날짜가 쓰이는 달력 등에 사용되는 표현임.
first - last
min과 max의 범위 내에 숫자가 모두 존재하는 것이 아닌 일부만 있을 때 고려할 수 있는 변수명임.
prefix - suffix
prefix는 시아버지의 시 등 접두사를 의미함.
suffix는 덮개, 지우개의 개처럼 접미사를 의미함.
코드를 읽는 일관성을 만들 수 있음.
예를 들어 리액트는 use가 붙으면 hook임을 알 수 있음. 이 외에도 jquery의 $나 JS의 #이 있음.
컴포넌트를 만들 때 이를 적용해 볼 수 있음. ex) baseButton, baseTable
네트워크 상태를 접미사로 보여줄 수 있음. ex) STARRED_REQUEST, STARRED_SUCCESS
매개변수의 순서가 경계다
매개변수를 2개가 넘지 않도록 하자.
3개 이상이라면 객체로 받거나 스프레드 연산자를 쓰자.
래핑 함수를 만들자.
function someFunc(one, two, three, four) {}
function getFunc(one, three) {
someFunc(one, undefined, three) // someFunc 매개변수 부분을 객체로 만들면 순서를 지키지 않아도 됨.
}
객체 다루기
computed property name
[]를 사용하면 객체의 key값도 변수로 만들 수 있음.
lookup table
function getUserType(type) {
switch (type) {
case 'ADMIN' :
return '관리자';
case 'INSTRUCTOR' :
return '강사';
default:
return '해당 없음';
}
}